文章目录
功能
1.通信:网络层实现主机间通信,传输层实现进程间通信(数据运到主机还没结束,还要给具体的进程线程)
2.复用和分用
以寄信为例,
复用:一家几口人分别寄信,都写好放入信箱,快递统一运走
分用:分别收到回信,在信箱取出各自的信
两个协议(TCP、UDP)
TCP:面向连接,可靠的传输层协议(如发送大的文件)
UDP:费面向连接,不可靠的传输层协议(如发送一条QQ消息)
寻址与端口
网络层的端口是硬件端口(如路由器)
传输层的端口(标识进程,因为要与具体进程通信)是软件端口
、
套接字
UDP协议(用户数据报协议)
UDP不修改应用层传下来的报文长度,直接加上首部继续传输
因此应用层的报文长度不宜太大和太小(太大时传到网络层有MTU限制,太小时传到网络层的数据部分相比于IP首部会比较小,相对来说有用信息会比附加信息所占比例小,因此两种情况都影响传输效率)
4.无拥塞控制,适合实时应用(如视频聊天)(适当拥塞可以接受)
UDP首部格式
数据字段可以为0
源端口号可以不填(全0, 此事发送方不需要接收方回复)
目的端口号一定要有(发给哪个主机的哪个进程)
UDP校验
TCP
TCP协议特点
TCP报文段首部格式
序号:本报文段所发送数据部分的第一个字节的序号
确认号:期望收到对方下一个报文段的第一个数据字节的序号
数据偏移:一个数字的单位是4B,如 15 则代表60B
URG=1,紧急,可插队不用在缓存中排队
其他位类似理解
SYN(synchronous建立联机) ACK(acknowledgement 确认) PSH(push传送) FIN(finish结束) RST(reset重置) URG(urgent紧急)Sequence number(顺序号码) Acknowledge number(确认号码)
如发送的确认号为701,窗口大小1000,则希望发送的是701-1700
TCP连接管理(三次握手,建立连接)
洪泛攻击(三次握手产生的黑客攻击问题)
TCP连接释放(四次握手,结束连接)
TCP可靠传输
接收方已经一个报文段后可以,接受方可以发送一个用于确认的报文段(无数据,序号字段为已接收数据的下一个数据的序号),用于告知发送方可以删除已发送数据并开始发送下一部分数据
报文段重传(超时重传)
重传时间(规定的时间)不宜过长或过短,
过短时:对于那些传输时间较长的报文段,还没到接收方,便开始重传,网络负荷增大
过短时:网络空闲时间增大,降低传输效率
自适应算法动态调整重传时间(加权平均往返时间),每发送一个报文段,就加权计算所有已发送的重传时间并调整发送下一个报文段的重传时间
冗余ACK(快重传,冗余确认)
收到3个冗余ACK 即 确认丢失
TCP流量控制
滑动窗口机制
发的太快来不及接收
解决办法:接收方根据自己情况动态调整发送方发送窗口大小(通过设置接收方的报文段的窗口字段来实现)
TCP流量控制过程举例:
一共设置了三次窗口大小(rwnd=400默认, 300, 100,0为不发送)
为解决rwnd=0后不发送数据的死锁情况(僵持在这,不发送数据):
持续计时器 和 零窗口探测报文段
TCP拥塞控制(多个,堵塞)
协调使用网络资源的各个主机,
流量控制是点对点问题(单个发送方的发送速率过快,导致接收方接收缓存不够),拥塞控制是全局性问题(多个发送方发送的数据使网络发生了堵塞)
拥塞控制四种算法(两两组合使用)(及发送窗口,接收窗口,拥塞窗口)
慢开始和拥塞避免
一个传输轮次:一个往返来回(一次可以同时发送多个报文段,但只算一个传输轮次)
下图中纵坐标单位1指一个报文段,其长度为MSS
图解:
开始时cwnd=1,试探网络拥塞程度如何
每次网络拥塞后都重新将拥塞窗口cwnd=1,然后继续执行指数增长
网络拥塞(即达到设定的阈值后将新一轮指数增长的阈值除以二,图中为24/2 = 12)
指数增长过程中,只要收到发送报文段的确认,就将拥塞窗口翻倍,再去发送报文段
快重传和快恢复
快恢复指拥塞后不用将cwnd降为1,在拥塞时的cwnd / 2即可