计算机网络——运输层TCP/UDP

时间:2022-03-26 14:37:22

总结计算机网络中的运输层,其他层下篇文章总结

一.运输层

1.端口号:
1).服务器端使用的端口号:
第一类:熟知端口号 0~1023
第二类:登记端口号,1024~49151

2).客户端使用的端口号 
49152~65535

2.UDP:
1).特点:
a.无连接
b.尽最大努力交付(实际上就是不可靠的)
c.面向报文的(应用层交给运输层多大的报文,UDP都一次性发送)
d.没有拥塞控制
e.支持一对一,一对多,多对一,多对多交互通信
f.首部开销小,只有8个字节

2).首部格式
a.源端口
b.目的端口
c.长度:数据包长度(最小就是首部长度8)
d.检验和

注:每个字段2个字节

3.TCP
1).特点
面向连接
每个连接只能一对一
可靠交付
全双工通信
面向字节流

2).TCP连接的是两个端点,每个端点是个套接字(IP地址:端口号)

3)可靠传输工作原理
①.停止等待协议:每发送完一个分组就停止发送,等待对方的确认。再收到确认后再发送下一个分组。接收方收到分组检验为错误,或没收到分组两种情况都是什么也不做,除非收到分组且检验为正确才会发送确认。发送方没有收到确认会超时重传。

上述可靠传输协议常称为:ARQ(自动重传请求)

②.连续ARQ协议
就是维持一个发送窗口,里面有多个分组,连续发送,而不是等待一个确认才发送一个分组。当收到一个确认,就让窗口向前移动一个分组。一般接收方都是累积确认,只发送最后一个分组的确认,这就表示其他所有分组都正确到达。当然若这一开始几个分组后面你的分组到达,前面分组不到达,说明接收方没有全部接受,就不会发送确认,只有全部接收才发送确认。

3)TCP首部格式
①源端口,目的端口
②序号seq:发送数据字节的开始序号,用于将所有分组组装成一个正确的应用层数据
③确认号ack:期望下一个报文段的第一个数据字节的序号。表明这个确认好之前的数据都已发送正确
④数据偏移:支出数据在报文段的哪里。其实也间接地指出了TCP首部的大小
⑤保留:
⑥6个控制位
紧急URG:用于发送紧急数据时使用。紧急数据紧邻首部,后面才是数据部分
确认ACK:表示确认号有效。在连接建立后发送报文段必须设置这个ACK=1
退送PSH:表示一个报文段被接收不放进缓存,直接交给上级应用
复位RST:必须释放连接,重新建立
同步SYN:建立连接时候用,用于同步序号。
终止FIN:用来释放连接
⑦窗口:作为接收方让发送方设置发送窗口的一句
⑧检验和
⑨紧急指针:指示紧急数据的字节数,跟紧急URG一起用
⑩选项:这个附加项。目前有最大报文段长度MSS,选择确认,移位值S,时间戳值。这些附加项可加可不加

4)滑动窗口: 让发送数据快的
首先利用建立连接的TCP首部信息可设置发送方A的发送窗口(当然这个发送窗口是动态变化的)。会连续将这个窗口的字节序号数据发送出去。当接收方先接收到后面的字节序号数据没有接收前面的序号数据,只会发送已收到正确的序号,若连续接收了,则会发送连续接收的序号最后一个。当发送方接收到正确的序号,如一开始发送窗口起始是31,现在收到33确认序号,则将窗口向前移动三个序号。若发送窗口将整个窗口的序号数据都发送出去,也没接收到正确的序号确认(即大于31的序号),或没收到确认,则在等待超时时间之后,重新发送本窗口的数据。

5)TCP流量控制:让发送方的发送速率不要太快,让接收方来得及接收处理
方法①:利用滑动窗口实现流量控制:其实就是增大或缩小滑动窗口的大小,这样就可以控制发送的数据流量

6)TCP拥塞控制:对资源的需要超过可用资源。其实就是网络上传输的资源不够主机用。应该是网络出现了拥塞,导致有些分组数据延迟到达,或丢失,或重传等,致使主机在一定时间内收不到那么多需要的数据。

①控制拥塞的方法:
慢开始:让拥塞窗口(cwnd)从1开始成倍增长
拥塞避免:每次cwnd发送大小加1
快重传
快恢复

②慢开始和拥塞避免合作:先用慢开始达到慢开始门限(ssthresh),就用拥塞避免方法,当判断到拥塞时就将ssthresh减到出现拥塞时cwnd的一半,并将cwnd设置为1,重新使用慢开始进行。

③快重传和快恢复:快重传要求接收方每收到一个失序的报文段就发出重复确认。快恢复是一连收到是三个重复确认则重发对方未收到的那个失序的报文段。

7)TCP连接
三次握手:
SYN=1,seq=x (发-》接)
SYN=1,ACK=1,seq=y,ack=x+1 (接-》发)
ACK=1,seq=x+1,ack=y+1  (若不带数据,则不需要序号)  (发-》接)

注:因为TCP要求SYN报文段(SYN=1的报文段),需要消耗一个序号。所以就出现上面有seq的字段

8)TCP释放
FIN=1,seq=u  (发-》接)
ACK=1,seq=v,ack=u+1(接-》发)
FIN=1,ACK=1,seq=w,ack=u+1(接-》发)
ACK=1,seq=u+1,ack=w+1(发-》接)

注:FIN报文段也被要求要消耗一个序号