传输层概述
功能:
1.提供进程和进程之间的逻辑通信
2.复用和分用
网络层:提供主机与主机间的逻辑通信
复用:用同一种协议传输数据包(相当于将一些信件放在一个邮箱中,然后送信小哥同意进行传送)
分用:把传来的报文段递送给某一个进程(收到回信后同意放在一个信箱中,然后再逐一送回每个人手里)
3.传输层对收到的报文进行差错检测
4.传输层的两种协议
传输层的两种协议
UDP协议
主要特点
1.无连接
2.不可靠的最大努力交付
3.面向报文的,适合一次性传输少量数据的网络应用
4.没有拥塞控制,适合实时应用(直播)
首部格式
UDP校验
TCP协议特点和TCP报文段格式
1.TCP是面向连接(虚连接)的传输协议
2.每一条TCP的连接只能有两个端点,每一条TCP连接只能是点对点的(不能是广播多播等)
3.可靠,有序,无差错
4.提供全双工通信(电话)
5.TCP把应用程序交下来的数据看成仅仅是遗传无结构的字节流
TCP报文段的首部格式
源端口和目的端口总共占了四个字节
序号:代表本字段中表示本报文段所发送数据的第一个字节的序号
eg:此时的序号就是1
确认号
eg:当TCP缓存接收到报文段后,会返回一个确认号,由于收到了123后,下一个期望是4,所以确认号就是4
数据偏移
这就是数据偏移的大小(记得最后×4)
URG紧急位
ACK确认位:
push位推送位(了解)
RST位复位(了解)
SYN同步位
FIN终止位
窗口:
紧急指针
选项:了解
填充:
必须是TCP的首部为4字节的整数倍
TCP连接管理
建立连接的三个阶段
三次握手:
seq为序号
将SYN置为1,然后给请求报文段分配一个随机的序号x
将ack(确认号)置为1+x,(确认号为期望报文段发送的下一个字节,又因为连接请求报文段没有数据部分,下一个期望收到的字节就是x+1),然后分配一个随机字节序号seq=y
Syn置为0(只有在连接请求和接受会置为1)
ACK置为1,seq=x+1,ack=y+1
TCP连接释放
与建立连接的第一步类似
类似第二步,客户主机接收后结束通话(并不是断开连接),等待服务器告诉他服务器也结束通话了,然后就可以断开连接
服务器发完数据后,就发出连接释放报文段,关闭TCP连接,确认号和上一步的确认号都是u+1,因为客户没有发送任何信息了
等待2MSL(最长报文段的寿命)。当服务器没有收到第四个报文段是会在2MSL时间内重传第三个报文段,然后ab都会正常关闭。
TCP的可靠传输
可靠的定义:
保证接收方进程从缓存中读取的字节流与发送方的字节流是完全一样的
Tcp实现可靠传输的机制
确认,重传
当收到报文段时,接收方会返回一个确认报文段,但是并不是要收到了报文段后才能继续发送
超时重传
冗余ACK
TCP流量控制
典型例子
死锁的解决方案
当主机b发送的窗口信息丢失时,主机b因为迟迟接收不到主机a的窗口值信息,所以一直认为窗口值为0,因此会一直不发送数据,就会出现死锁
解决方案:
TCP的拥塞控制
和流量控制的区别
1.拥塞控制是全局性的问题,是因为网络发生了堵塞,导致了许多网络发送的数据迟迟到不了接收方
2.流量控制是端对端的问题,是因为发送方的发送速率过快,导致了接收方的接受缓存/窗口不够
两种窗口
四种算法
慢开始算法 和拥塞避免算法
最开始试探阶段,用满开始算法指数增长
到达慢开始的门限值时速度减慢,用拥塞避免算法,加法型增长
当发送方检测到网络拥塞时,将现在的拥塞窗口÷2得到新的门限值,将cwnd直接置为1
继续进行慢开始
快重传和快恢复
总结