术语储备:
SYN:同步位 ;SYN=1,表示进行一个连接请求
ACK:确认位 ;ACK=1,确认有效 ACK=0,确认无效
ack : 确认号 ;对方发送序号+1
seq : 序号 ; 标识从TCP发端向TCP收端发送的数据字节流
FIN :表示关闭连接
TCP/UDP协议都是传输层协议
TCP协议:(传输控制协议)
连接(三次握手),断开连接(四次挥手)
为其上层提供面向连接的可靠数据传输服务
TCP通信双方在传输数据之前必须首先建立TCP连接(逻辑连接,非物理连接),数据传输结束后必须要释放连接,为了实现可靠传输,使用很多措施,TCP连接管理,确认机制,超时重传,流量控制,拥塞控制等,报文段首部比较大,占用处理机资源比较多。
三次握手:
客户端首先给服务端发送一个SYN位 置1的报文,
当服务端收到报文后,就知道客户端想要建立一个新的连接,
于是服务端给客户端发送一个ACK位置1,SYN位置1的消息确认包,
当客户端接收到后,客户端就知道它既可以发送也能接收数据了,
但此时,服务端只知道自己可以接受数据,却不知道发给客户端的数据它接收到没有,所以,此时客户端要给服务端发送一个ACK位置1的报文,完成后,3次握手结束,连接建立
四次挥手:
可以由任意一方发起,
设发起的一方为客户端,
客户端首先发送一个FIN位 置1的报文,
服务端收到后,知道客户端想和自己断开连接,但是,
服务端不一定做好了准备,因为此时很有可能有一些未发送完的消息,还要继续发送,
所以服务端只能先进行一个消息的确认,就是先告诉客户端,它知道客户端要断开连接了,但是它还有消息没发送完,等发送完之后,再联系客户端。
当服务端数据发完之后,会向客户端发送一个FIN值为1的报文,客户端收到后,会向服务端发送一个确认报文,四次挥手结束
UDP协议 :(用户数据报协议)
为上层提供的是无连接的不可靠的数据传输服务
通信双方传输数据之前不需要建立连接
UDP不需要可靠传输,因此不需要使用可靠传输的各种机制
实现简单,用户数据报的首部比较小