TCP

2018-08-24  本文已影响0人  yz_wang

OSI七层网络


  1. TCP提供什么功能?
    Transmission Control Protocol,缩写为TCP。
    在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能,用户数据包协议(UDP)是同一层内另一个重要的传输协议。

传输层:端对端连接


应用层向TCP层发送用于网间传输的、用8位字节表示的数据流,然后TCP把数据流分割成适当长度的报文段(通常受该计算机连接的网络的数据链路层的最大传输单元(MTU)的限制)。之后TCP把结果包传给IP层,由它来通过网络将包传送给接收端实体的TCP层。

  1. TCP 三次握手和四次挥手


    建立连接
断开连接

2.1 为什么三次握手?
采用三次握手是为了防止已连接的请求报文段又传送到服务器,造成服务器崩溃。
假设只有两次握手,连接时,第二次丢失,服务器认为连接成功,而客户端认为连接失败,继续发送连接请求,服务器就会收到SYN的洪水攻击。

2.2 为什么建立连接是三次握手,关闭连接是四次握手?
全双工:指可以同时(瞬时)进行信号的双向传输(A→B且B→A)。指A→B的同时B→A,是瞬时同步的。
半双工:指一个时间内只有一个方向的信号传输(A→B或B→A)。
因为TCP是全双工模式,因此每个方向都需要一个FIN和ACK,当一端发送了FIN包之后,处于半关闭状态,此时仍然可以接收数据包。
在建立连接时,服务器可以把SYN和ACK放在一个包中发送。
假设在断开连接时,如果一端收到FIN包,但此时仍有数据未发送完,此时就需要先向对端回复FIN包的ACK。等到将剩下的数据都发送完之后,才能向对端发送FIN,断开这个方向的连接。
因此很多时候FIN和ACK需要在两个数据包中发送,则需要四次握手。

2.3 2MSL等待时间( Maximum Segment Life)
第四个消息:A发出ACK,用于确认收到B的FIN当B接收到此消息,即认为双方达成了同步:双方都知道连接可以释放了,此时B可以安全地释放此TCP连接所占用的内存资源、端口号。
所以被动关闭的B无需任何wait time,直接释放资源。
但,A并不知道B是否接到自己的ACK,A是这么想的:

  1. TCP为什么能保证可靠传输?
  1. 套接字是什么?
    为了区别不同的应用程序进程和连接,许多计算机操作系统为应用程序与TCP/IP协议交互提供了称为套接字 (Socket)的接口,区分不同应用程序进程间的网络通信和连接。
    为了区别不同的应用程序进程和连接,许多计算机操作系统为应用程序与TCP/IP协议交互提供了称为套接字 (Socket)的接口,区分不同应用程序进程间的网络通信和连接。
  1. TCP和UDP的区别
上一篇 下一篇

猜你喜欢

热点阅读