zoukankan      html  css  js  c++  java
  • TCP(传输控制协议)和三次握手和四次断开

    TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能,用户数据报协议(UDP)是同一层内[1] 另一个重要的传输协议。在因特网协议族(Internet protocol suite)中,TCP层是位于IP层之上,应用层之下的中间层。不同主机的应用层之间经常需要可靠的、像管道一样的连接,但是IP层不提供这样的流机制,而是提供不可靠的包交换。
     
    应用层向TCP层发送用于网间传输的、用8位字节表示的数据流,然后TCP把数据流分区成适当长度的报文段(通常受该计算机连接的网络的数据链路层的最大传输单元([1] MTU)的限制)。之后TCP把结果包传给IP层,由它来通过网络将包传送给接收端实体[1] 的TCP层。TCP为了保证不发生丢包,就给每个包一个序号,同时序号也保证了传送到接收端实体的包的按序接收。然后接收端实体对已成功收到的包发回一个相应的确认(ACK);如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据包就被假设为已丢失将会被进行重传。TCP用一个校验和函数来检验数据是否有错误;在发送和接收时都要计算校验和。

    三次握手:
    (1)建立连接,客户端发送SYN包给服务器,并进入SYN_SEND状态,等服务器确认。
    (2)服务器收到SYN包后,必须确认客户端,所以就发送ACK包,同时还必须SYN包发送回去,等待客户确认。
    (3)客户端收到SYN+ACK包后,向服务器发送确认包,这时开始建立连接。
     
    四次断开:
    1、客户端大宋数据完毕后,发送一个FIN,提出断开连接。
    2、服务器收到FIN包后,做出响应,发送一个ACK包,确认这个方向连接将关闭。
    3、等服务器的应用程序做好关闭准备时,服务器反向发送一个FIN包给客户端,请求关闭连接。
    4、客户端对服务器发送请求确认。并发送ACK包。
  • 相关阅读:
    软件工程基础 结对项目作业
    软件工程基础 第3次个人作业
    软件工程基础 第2次个人作业
    软件工程基础 第1次个人作业
    BUAA_2019_MATLAB基础与应用_期末复习纲要
    BUAA_2019_数学建模_期末复习提纲
    技术学习资源
    线程优先级的高低和执行顺序的关系
    阿里和Google的JAVA开发规约
    java中创建线程的3种方法
  • 原文地址:https://www.cnblogs.com/zfxJava/p/5594073.html
Copyright © 2011-2022 走看看