目录
网络概述:
网络通信其实就是位于网络中不同主机上面的2个进程之间的通信。
1.网络通信的层次
(1)硬件部分:网卡
(2)操作系统底层:网卡驱动
(3)操作系统API:socket接口
(4)应用层:低级(直接基于socket接口编程)
(5)应用层:高级(基于网络通信应用框架库)
(6)应用层:更高级(http、网络控件等)
2.OSI七层网络模型
3.TCP五层模型:
表示层:解决不同主机的通信的数据格式问题
会话层:建立和管理应用程序之间的通信(连接)(对下层的封装) 方便用户使用,自动收发包 报文
传输层:拆包组包 TCP:保证数据包的完整性 和 以及处理传输过程中可能发生的危险 UDP:发完就完了 报文----拆分成---->包
网络层:路由和地址解析。选择适当的网络节点进行路由。 包 ---->数据帧
数据链路层:控制对物理设备的访问 规定数据如何在不同物理设备上进行传出 并提供数据纠错功能。在不可靠的物理设备上提供可靠传输 数据数据帧
物理层:定义通信的物理设备的规格。网线接口类型,光纤接口类型,传输速率等
因为Socket通信时候用到了IP和端口,仅这两个就表明了它用到了网络层和传输层;而且它无视多台电脑通信的系统差别,所以它涉及了表示层;一般Socket都是基于一个应用程序的,所以会涉及到会话层和应用层。
参考博客:
https://www.cnblogs.com/carlos-mm/p/6297197.html
https://blog.csdn.net/u011774517/article/details/67631439
一、物理层
1.物理层作用
管理维护物理连接,确定传输媒体特性,提供比特流传输服务,对上层(数据链路层)屏蔽物理设备以及协议的差异性。 信息转 信号
2.物理层概述
信道:传输媒介
信息(“aasdf”)-------->数据(二进制数据)----------->信号(可在物理设备上传输)
计算机产生的二进制数(基带信号)无法直接在信道上传输,通过调制将基带信号转换成可在信道上传输的信号。
3.信号调制
基带调制:将基带信号转换成符合信道特性的基带信号,也称作编码
限制码元传输速率的两个因素是信噪比和带宽(信道能通过的频率范围)
当带宽一定,信噪比一定,码元传输速率一定时,可让码元携带更多的数据来提升传输速率(一个码元表示一位二级制数据 --->一个码元表示m位二级制数据)
4.信道复用技术
码分复用:扩频,将1比特转化成一个比特序列,多用于加密
二、数据链路层
1.数据链路层作用
在物理层比特流在介质上传输是不可靠的,数据链路层在物理层的基础上提供差错检测,差错控制,流量控制。为网络层提供一个可靠传输。对网络层屏蔽了不同传输介质的差异性。
数据链路层信道通信方式:点对点通信 广播通信(广播通信需要共享信道协议来协调主机间的数据发送)
2.点对点数据链路层三个基本问题
在网络ip报文的基础上添加首尾封装成帧,首尾是为了确定帧界限,也包含了一些控制信息 帧 = 首 + ip收据报 + 尾。
作用:根据帧定界符 可以确定是否收到的是个完整帧 不是完整帧直接丢弃
保证ip数据报中的比特组合不会出现帧定界符,使用字节填充和字符填充将ip数据包中的帧定界符的字节进行转义
链路上传输由于噪声的干扰导致传输的帧数据错误,数据链路层采用循环冗余检测CRC,保证帧的正确性
循环冗余检测CRC:通信双方约定一个比特序列,将待发送数据与约定比特序列进行运算,生成一个帧检测序列FCS,将FCS添加到数据后一起发送出去。接受端根据FCS校验是否数据出错,出错就丢弃(并不能判断出是哪些字段出错)
CRC保证了比特流的正确性,但并不是一个可靠传输,还存在丢帧,帧重复,帧乱序到达等情况,所以再次基础上增加帧序号,确认,重传机制保证链路层为网络层提供一个可靠的传输。
3.滑动窗口协议
流量控制:平衡收发方传输/接受速率 流量控制取决于接收端 防止接收端缓冲区溢出(丢包)
当发送速率 > 接受速率 接收端的缓冲区可能会溢出 导致丢包
若从滑动窗口的观点来统一看待停等、后退n及选择重传三种协议,它们的差别仅在于各自窗口尺寸的大小不同而已。
后退n协议:发送窗口>1,接收窗口=1; 每收到一个帧并且帧序号在窗口内 则回一个确认帧
选择重传协议:发送窗口>1,接受窗口>1; 窗口内的帧全部收到 则发送确认帧 并移动窗口