TCP/UDP 三握四挥

一、TCP和UDP的区别

TCP全程传输控制协议,UDP名称为用户数据包协议

1. UDP传送之前不需要建立连接,TCP则是面向连接的服务。

2. UDP不可靠,TCP通过多种机制保证传输的可靠性

3. TCP由于可靠传输,具有相当多无法避免的开销,因此效率较UDP低

4. UDP收到后不需要给出任何确认信息

5. TCP是两个端点,UDP可以一对多,一对一,多对多

6. UDP面向报文,而TCP面向字节流

如何理解第六条:UDP仅仅将上层的报文添加首部,一次发送一条;而TCP仅仅把数据看成一连串无结构的字节流,并不知道字节流的意义。接收方必须能将字节流还原为应用层数据。

TCP对应的协议包括SMTP,HTTP和FTP等

UDP包括的协议包括DNS,RIP,DHCP和IGMP等

二、UDP的结构

UDP将应用层报文直接添加首部,形成UDP数据报。首部8个字节,源端口,目的端口,长度和检验和各2个字节(有错就丢弃)。

UDP在计算检验和的时候会添加12个字节的伪首部,并非真正的首部,只是临时添加用于计算检验和。

 

三、TCP三次握手

虽然TCP是面向字节流,但传送的数据单元仍是报文段。

套接字(Socket) = (IP地址:端口号)

三次握手图:

基本情况如图所示,主机A发送SYN = 1, seq = x

B回复SYN = 1 ACK = 1 seq = y ack = x + 1

A再次回复ACK = 1 seq = x + 1 ack = y + 1

为什么需要三次握手?即为何需要第三次的握手?

防止A发出请求由于网络延迟等原因超时,新的连接已经建立,数据已经发送,该请求才发送到B由于B确认后就可连接,因此对资源造成浪费。

五、四次挥手

 

 主机A先发出关闭申请,只需将SYN修改为FIN即可。

即FIN=1 seq=x 

ACK=1 seq=y ack=x+1

FIN=1 ACK=1 seq=z ack=x+1

ACK=1 seq=x+1 ack=z+1

为什么关闭连接需要比建立连接多一次?

留下关闭的时间

 

posted @ 2020-07-01 22:42  LeftBody  阅读(203)  评论(0编辑  收藏  举报