TCP/IP-TCP协议
TCP: 面向连接的可靠的流协议。只有在确认链接成功后才会发送数据,从而可以控制通信流量的浪费;充分实现了数据传输控制,可以进行丢包时的重发。
建立连接(三次握手): tcp协议中建立连接是数据传输的前提,所谓三次握手,是指建立一个TCP连接时需要客户端和服务器端总共发三个包已确认链接的建立。在 socket编程中,这一过程有客户端执行connect来触发。 三次握手
三次握手流程:
TCP——标志位:SYN, FIN, ACK, PSH, RST, URG.
TCP的连接建立和连接关闭,都是通过请求-响应的模式完成。 其中,ACK是可能与SYN,FIN等同时使用的,比如SYN和ACK可能同时为1,它表示的就是建立连接之后的响应, 如果只是单个的一个SYN,它表示的只是建立连接。TCP的几次握手就是通过这样的ACK表现出来的。 但SYN与FIN是不会同时为1的,因为前者表示的是建立连接,而后者表示的是断开连接。RST一般是在FIN之后才会出现为1的情况,表示的是连接重置。 一般地,当出现FIN包或RST包时,我们便认为客户端与服务器端断开了连接;而当出现SYN和SYN+ACK包时,我们认为客户端与服务器建立了一个连接。PSH为1的情况,一般只出现在 DATA内容不为0的包中,也就是说PSH为1表示的是有真正的TCP数据包内容被传递。
断开连接(四次分手):
流程图:
|
SYN:同步序列编号。是TCP/IP建立连接时使用的握手信号。在客户机和服务器之间建立正常的TCP网络连接时,客户机首先发出一个SYN消息,服务器使用SYN+ACK应答表示接收到了这个消息,最后客户机再以ACK消息响应。这样在客户机和服务器之间才能建立起可靠的TCP连接,数据才可以在客户机和服务器之间传递。 FIN:表示请求关闭连接,在四次分手时,我们发现FIN发了两遍。这是因为TCP的连接是双向的,所以一次FIN只能关闭一个方向。 ACK:代表确认接受,从上面可以发现,不管是三次握手还是四次分手,在回应的时候都会加上ACK=1,表示消息接收到了,并且在建立连接以后的发送数据时,都需加上ACK=1,来表示数据接收成功。 seq:序列号,什么意思呢?当发送一个数据时,数据是被拆成多个数据包来发送,序列号就是对每个数据包进行编号,这样接受方才能对数据包进行再次拼接。 |
- IP和TCP协议字段讲解以及TCP的三次握手和四次断开过程
- TCP/IP和网络通信(TCP协议编程)
- 【TCP/IP】TCP协议详解
- TCP/IP(九)TCP协议概述
- TCP/IP TCP/IP是个协议组,可分为三个层次:网络层、传输层和应用层。 在网络层有IP协议、ICMP协议、ARP协议、RARP协议和BOOTP协议。 在传输层中有TCP协议与UDP协议。
- TCP/IP(6)--TCP协议详解
- TCP/IP详解--学习笔记(9)-TCP协议概述
- 【tcp-ip学习总结】使用tcp协议实现简单的通信小程序
- TCP/IP(9)-TCP协议概述
- TCP/IP详解--学习笔记(9)-TCP协议概述
- TCP/IP - 2.5 TCP协议对sock结构初始化
- <再看TCP/IP第一卷>TCP/IP协议族中的最压轴戏----TCP协议及细节
- TCP/IP(九)TCP协议概述
- TCP/IP 之TCP协议(2):连接和状态
- TCP/IP基础知识
- tcp-ip ARP: Address Resolution Protocol
- TCP/IP第四层--传输层TCP数据报文详解
- TCP/IP、Http、Socket的区别
- 【转】TCP/IP数据包结构分解
- 理解TCP/IP三次握手与四次挥手的正确姿势