Day6学习记录

重要知识

1.tcp与udp

(1)tcp和udp都工作在传输层 目标:在程序之间传输数据

Day6学习记录_第1张图片 

连接(tcp)与非连接(udp)

 

(2)三次握手:客户端向服务端发一个SYN包(请求连接)——服务端向客户端回一个ACK+SYN包(同意连接)——客户端向服务端发一个ACK包(连接建立)

为什么是三次而不是两次?

——为了防止已失效的请求报文突然又传到服务器引起错误

在不可靠的信道上建立起可靠的连接

(3) 传输确认:解决丢包问题和乱序问题

为每一个链接建立发送缓冲区0123456789......

*发送端发送报文(序列号+长度+数据内容)——接收端回复确认(ACK=序列号+长度=下一包起始序列号)——发送端确认对方收到

*发送端也可以切割发送——接收端根据序列段和长度重组出完整的数据

*数据丢失了怎么办:接收端发送丢失数据长度的ACK报文——发送端收到后重发这一部分数据——接收端收到后进行补齐

 

(4) 四次挥手(两端都可主动发出)

*第一次挥手:客户端向服务端发一个FIN包,进入终止等待1状态。

*第二次挥手:服务端发一个ACK包,表示进入关闭等待状态。客户端进入2状态。

*第三次挥手:服务端继续发送未发送完的数据,客户端接收数据。发送完后服务端发送一个FIN包,进入最后确认状态。

*第四次挥手:客户端发送ACK包,进入超时等待状态,服务端收到ACK后立刻关闭连接。

*客户端进行超时等待的原因:防止服务端没收到ACK包,始终处于确认状态。

目的:在不可靠的网络信道中进行可靠的连接断开确认。

 

 

2. Udp

(1) 发送数据只是简单的封包一下,从网卡发出去,数据包之间并没有状态上的联系。

(2) 性能损耗少;资源占用少;稳定性弱。

 

3. tcp准确无误稳定可靠

udp速度快,对实时性要求较高但对少量丢包无太大要求

你可能感兴趣的:(学习,笔记)