1、扯淡
2、网络知识
OSI七层协议:
物理层:数据是bite流
数据链路层:将bite数据组成帧
网络层:(路由器)IP协议
传输层:传输协议、流量控制 TCP协议、UDP协议
会话层:建立和管理应用程序之间的通信
表示层:
应用层:HTTP协议
TCP/IP是OSI的实现
概念模型(4层):应用层(1、2、3),传输层、网络层、链路层(6、7)
3、TCP三次握手
TCP(传输控制协议)
IP是无连接的协议
TCP Flags:
URG:紧急指针标志(为1表示紧急指针有效)
ACK:确认序号标志(为1表示有效,为0表示报文中不含确认信息)
PSH:push标志
RST:重置连接标志
SYN:同步序号、用于建立连接过程(在连接过程中SYN=1和ACK=0表示数据段没有使用捎带的确认域)
FIN:finish标志,用于释放连接(为1表示没有数据再发送关闭连接)
4、TCP三次握手建立一个连接
(抓包软件Wireshark)
第一次握手:建立连接时,客户端发送SYN包[SYN=k]到服务器,并进入SYN_SEND状态,等待服务器确认
第二次握手:服务器收到SYN包,必须确认客户的SYN[ack=j+1],同时自己也发送一个SYN包[syn=k],即SYN+ACK包,此时服务器进入SYN_RECV状态
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK[ack=k+1],此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手
为什么需要三次握手?
为了初始化Sequence Number的初始值
5、TCP的四次挥手即终止连接
有客户端主动关闭,发送关闭报文
第一次挥手:客户端A发送一个FIN,用来关闭客户A到服务器B的数据传送。
第二次挥手:服务器B收到这个FIN,它发回一个ACK,确认序号为收到的序号加1。和SYN一样,一个FIN将占用一个序号。
第三次挥手:服务器B关闭与客户端A的连接,发送一个FIN给客户端A。
第四次挥手:客户端A发回ACK报文确认,并将确认序号设置为收到序号加1。
为什么会有TIME_WAIT(Client中的状态)状态?
确保有足够的时间让对方收到ACK包
避免新旧连接混淆
为什么许哟啊四次挥手此案端口连接?
因为全双工,发送方和接收方都需要FIN报文和ACK报文(双方各挥手两次)
网友评论