zoukankan      html  css  js  c++  java
  • 9.TCP:传输控制协议

    1.TCP功能
        TCP向应用层提供面向连接的、可靠的字节流服务。TCP可以认为是一个没有选择确认或否认的滑动窗口协议。
        TCP将用户数据打包构成报文段;它发送数据后启动一个定时器;另一端对收到的数据进行确认,对失序的数据进行重新排序,丢弃重复的数据;TCP提供端到端的流量控制,并计算和验证一个强制性的端到端检验和。
    1.1字节流服务
        TCP不在字节流中插入记录标识符,两个应用程序通过 TCP连接交换byte构成的字节流。举例来说,若乙方的应用程序先传10bytes,又穿20bytes,再传50bytes,连接的另一方将无法了解发防每次发送了多少字节。收发可以分4次接收者80bytes,每次接收20bytes。一段将字节流放在TCP连接上,同样的字节流将出现在TCP连接的另一端。TCP不对字节流内容做任何解释,应用层负责解释字节流。
    2.TCP保障可靠性的方式
    (1)应用数据被分割成TCP任务最合适发送的数据块。应用程序产生的数据报长度保持不变。由TCP传递给IP的信息单位称为报文段
    (2)TCP发出一个段之后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重大这个报文段。
    (3)TCP收到发自TCP连接另一端的数据,它将发送一个确认。
    (4)TCP将保持它首部和数据的检验和。这是一个端到端的检验和,目的是检验数据在传输过程中的任何变化。如果收到段的检验和有差错,TCP将丢弃这个报文段和不确定收到此报文段,等待发端超时并重传。
    (5)TCP将对收到的数据进行重新排序,将收到的数据以正确的顺序交给应用层。
    (6)TCP接收端会丢弃重复的数据。
    (7)TCP还能提供流量控制。TCP连接的每一方都有固定大小的缓冲区间。TCP的接收端只允许另一端发送接收端缓冲区所能接纳的数据。这将防止较快主机致使较慢主机的缓冲区溢出。
    3.TCP的首部
    TCP数据被封装在IP数据报中,格式如下:
    TCP包首部数据格式:
    IP和端口号构成socket,可以唯一定位目的主机上要通信的应用程序。
    序号:用于标识从TCP发端向TCP收端发送的数据字节流,他表示在这个报文端中的第一个数据字节。单位是4bytes。
    当建立一个新的连接时,SYN标识变1.序号字段包含由这个主机选择的该连接的初始序号ISN。该主机要发送的第一个字节序号为这个ISN加1,因为SYN标识消耗了一个序号。
    确认序号:包含发送确认的一端所期望收到的下一个序号,确认徐璈应是上次成功接收到的数据字节序号加1.只有ACK标识为1时,确认序号字段才有效。
    因为ACK总是TCP首部的一部分,所以发送ACK无需任何代价。
    首部长度:给出首部的长度,单位是4bytes。
    6个标识比特
    (1)URG 紧急指针。紧急指针和序号字段中的值相加表示紧急数据最后一个字节的序号。TCP的紧急方式是发送端向另一端发送紧急数据的方式之一。
    (2)ACK 确认序号有效。
    (3)PSH 接收方应该尽快将这个报文交给应用层。
    (4)RST 重建连接。
    (5)SYN 同步序号用来发起一个连接。
    (6)FIN 发端完成发送任务。
    窗口大小:窗口大小是一个16bit字段、因而窗口大小最大为65535字节。TCP的流量控制由连接的每一段通过声明的窗口大小来提供。窗口大小为字节数,起始于确认序号字段指明的值,这个值是接收端正期望接收的字节。
    检验和:检验和覆盖了整个TCP报文段,是一个强制的字段。
    数据部分也是可选的。
     



  • 相关阅读:
    【应用】SVG饼状图
    【应用】图片翻转js
    userData IE
    cookie
    Local storage htm5
    全局ajax事件
    jQuery ajax序列化函数
    jQuery ajax中的get请求方法汇总
    $.ajax()
    nodejs安装错误
  • 原文地址:https://www.cnblogs.com/zhoudayang/p/5281807.html
Copyright © 2011-2022 走看看