计算机基础

1.c/s结构

客户端                         服务端

Client                                     Server

操作系统                               操作系统

硬件                                         硬件

网卡(网线)-交换机-路由器-...(网络)网卡

2.什么是网络

网络:底层的物理链接介质加上互联网协议 ,互联网协议相当于计算机界的英语

OSI七层:(Open System Interconnection)

  • 1.应用层
  • 2.表示层
  • 3.会话层
  • 4.传输层
  • 5.网络层
  • 6.数据链路层
  • 7.物理层

TCP/IP五层                     四层

  • 1.应用层           1.应用层
  • 2.传输层           2.传输层
  • 3.网络层           3.网络层
  • 4.数据链路层     4.接口层
  • 5.网络层

3.五层协议详解:
物理层:       电信号:01010101101 a - 97

数据链路层:

对电信号 分组 使数字有意义 分组协议 = Ethernet协议 = 以太网协议 -> 网卡 mac地址(唯一的) mac(同一个子网)
head(18字节 = 6 源地址(mac) 6 目标地址(mac) 6 数据的描述) + data mac_head + ip_head + data
以太网的工作模式: 广播 --> 以太网基于mac地址的广播的方式来完成数据的传递 --> 只能在局域网完成 局域网才能找对对方

网络层:      

IPv4 IPv6 head(IP头 源地址+目的地址) + data iphead+data ip(哪一个子网) iphead + heac(tcp/udp) + data
ip + mac 就能找到全世界中唯一的计算机 ip->找到哪一个子网 mac->找到具体哪一台机器
ARP 协议 把ip地址解析成mac地址

传输层:      

tcp + udp 格式: head(tcp/udp) + data tcp/udp 基于端口工作的 端口:0 - 65535 一个软件一个端口 0-1024给操作系统使用的
ip+端口 就能找到全世界范围内的唯一一个软件 head(tcp) + head(应用头) + data
服务端最好一直对外提供 服务端的端口和ip要捆绑固定 不能随便变 客户端的端口可随便变

应用层          暴风 qq ... 软件 格式: head(应用头)+data 应用协议:http/ftp...

五层串起来:--->: 应用层产生数据head(固定长度)+data -> 传输层 -> 网络层 - > 数据链路层 -> 物理层

4.传输层详解:
tcp: 流式协议; 像水流一样发送数据,管道流数据 双向管道 c--->s c<---s 没有数据前 就先建管道
挖管道:
         1.client 发个请求 要挖了 c--->s # syv=1 发请求 icq=x 序列号 数据包的编号
         2.server 回应了 可以 并且我也要挖一条 确认+ 请求 s-->c # ack=1 + x 确认 syv=1 发请求 icq = y
         3.client 回应了 可以 c-->s s-->c 成功 三次握手 # ack=1 + y 确认
tcp是可靠传输 s得到包之后回应收到 c没收到确认信息 就在传一遍 所以叫可靠传输
断开链接:
        1.client 发请求 要断开了 fin=1
        2.server ack=1 确认 注:这里不能发请求要断开 因为不确定s->c数据是否传完了
        3.server 发请求 要断开了 fin=1
        4.client ack=1 确认
udp: 没通道 client 一直发数据 不需要 对方回应 一直发 断电了或者网络出问题 client 不管 所以不可靠
tcp:  可靠       对方给了确认收到信息,才发下一个,如果没收到确认信息就重发
效率: tcp  可靠     效率低
         udp 不可靠 效率高 不需要建管道 不需要等待对方回

5.socket编程:

socket 是什么?
Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,
它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。
所以,我们无需深入理解tcp/udp协议,socket已经为我们封装好了,我们只需要遵循socket的规定去编程,写出的程序自然就是遵循tcp/udp标准的。
socket 就是 == 片面说: ip + 端口
socket两大家族(两种套接字的类型):
          1.基于文件类型的套接字家族 AF_UNIX 一台机器上 两个软件通信
          2.基于网络类型的套接字家族 AF_INET 基于网络通信
socket工作流程:

 

posted @ 2018-03-30 22:43  Mr。yang  阅读(165)  评论(0编辑  收藏  举报