TCP协议中,A和B相互通信具体流程

Posted 白杨783

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TCP协议中,A和B相互通信具体流程相关的知识,希望对你有一定的参考价值。

 TCP是一种面向连接的协议,通信双方需要先建立连接,然后才能传输数据.TCP协议中,A和B相互通信的流程如下:

1.建立连接(三次握手)

A向B发送一个SYN数据包,请求与B建立连接,B收到SYN数据包后,发送一个SYN+ACK数据包作为响应,最后A再向B返回一个ACK作为响应,说明A已经收到了B发来的数据了.此时连接建立完成

2.相互通信

连接建立后,A就可以向B发送数据了,A将要发送的数据分成若干个数据段,每个数据段都有一个序号表示数据段的第一个字节在整个字节流的位置,B收到A发送的数据后,会发送一个ACK作为响应,这个ACK数据包中有一个确认序号,是A发送的最后一个字节的序列号+1,表示期望收到下一个字节的序号.

提高效率

为了进一步提高效率我们会有滑动窗口,延时应答捎带应答的机制.滑动窗口可以不等待的发送一批数据,使用同一份时间等待这组ACK,把不需要等待,直接发送的数据最大值称为窗口大小.窗口越大,传输效率就越高.这个窗口大小是根据接收放的处理能力中间节点的处理能力共同决定的,延时应答让接收方的先处理一些数据,返回ACK,这样可以让窗口更大一些,同样延时应答也可以少返回一些ACK,节省了一些资源.捎带应答可以让本来分几个数据包发送的数据合并一份(前提是发送时机相同),这样就节省了一些资源.提高了传输效率.

避免网络拥堵和延时

当然为了避免网络拥堵和网络延时,会对窗口大小进行限制.此时就有流量控制拥塞控制等机制,流量控制考虑了接收方的处理能力,会告诉发送方接收方接收缓冲区剩余空间大小,以此让发送方调节窗口大小.拥塞控制考虑的是网络中间节点设备的处理能力,通过实验的方式得到一个合理的中间节点的处理能力,发送方再据此调节窗口大小

通信过程中丢包处理

通信过程中丢包了,会有超时重传的机制,一旦丢包发送方就会收不到接收方的ACK,此时发送方会等待一段时间(2MSL),如果超过这个时间就会重新发送刚刚的数据包.在数据密集使用滑动窗口的传输中,超时重传会变成快速重传,当接收方连续收到三个发送方相同的确认序号时,就会重新发送确认序号索要的数据

通信过程中出现异常处理

如果是进程崩溃,比如A进程崩溃,会立即向B发送一个FIN,断开连接,此时会触发四次挥手,但四次挥手不一定能完成,由于连接已经断开了,A不能收到B的FIN和ACK给B返回ACK.只能等待超时再断开连接失败后关闭.如果是关机,关机前会杀进程,A会正常完成四次挥手操作.如果是主机掉电/网线断开,此时触发不了四次挥手,只能等待超时后关闭了

3.断开连接(四次挥手)

A发送完所有数据后,会发送一个FIN数据包作为结束标志.B收到FIN数据包后,发送一个ACK数据包作为响应,表示已经收到了A的FIN,然后B也会发一个FIN数据包,A收到FIN后,发送一个ACK作为响应,表示已收到B发来的FIN,连接已关闭

socket编程

一、网络基础知识
两台计算机要通过网络进行通信必备条件a、唯一的标识IP地址 b、需要共同的语言--协议 c、辨别不同的应用程序--端口号。
1.IP地址
每台计算机的唯一标识,用来区分网络中的不同主机,是两台主机进行网络通信必不可少的。IPV4
2、协议:
a、TCP/IP协议:目前世界上应用最为广泛的协议。是以TCP和IP为基础的不同层次上多个协议的集合。也称为:TCP/IP协议族或者TCP/IP协议栈
b、TCP Transmission Control Protocol传输控制协议
c、IP Internet Protocol 互联网协议
d、TCP/IP模型(网络分层)
1:物理层,网线……
2: 数据链路层
3:网络层
4:传输层
5:应用层:HTTP超文本传输协议、FTP文件传输协议、SMTP简单邮件传送协议、Telnet远程登录服务
3、端口号:
a、用于区分不同的应用程序
b、端口号范围为0-65535,其中0-1023为系统所保留;
c、IP地址和端口号组成了所谓的Socket,Socket是网络上运行的程序之间双向通信链路的终结点,是TCP和 UDP的基础
d、常用端口号:http:80;ftp:21;telnet:23
java中的网络支持
针对网络通信的不同层次,java提供的网络功能有四大类
1、InetAddress:用于标识网络上的硬件资源(IP地址)
2、URL:统一资源定位符--通过URL可以直接读取或写入网络上的数据
3、Sockets:使用TCP协议实现网络通信的Socket相关的类
4、Datagram:使用UDP协议。将数据保存在数据报中,通过网络进行通信

以上是关于TCP协议中,A和B相互通信具体流程的主要内容,如果未能解决你的问题,请参考以下文章

(chap2 TCP/IP基础知识) TCP/IP分层模型的通信流程

tcp/ip协议的作用是啥

socket编程

网络基础——TCP/IP

HTTP,TCP/IP,Socket

网络通信流程