• TCP/IP TCP


    1.概述

      TCP是一个面向连接的字节流服务,在彼此的连接中需要建立一个TCP连接进行通信,TCP也是一个可靠的服务,通过几种方式验证

      1.应用数据分割成TCP认为合适的数据快,应用程序产生的数据报长度保持不变,由TCP传递给IP的信息块成为报文段或段.

      2,当TCP发送一个段后,启动一个定时器,等待目的端确认到这个报文段,如果等待目的端确认收到这个报文段,如果不能收到一个确认,则重发这个报文段。

      3.当TCP收到发自TCP连接的另一端数据,将发送一个确认

      4.TCP将保持它首部和数据的检验和,目的是检测数据在传输过程中的任何变化m如果收到检验和差错,TCP丢弃这个报文段和不确认收到此报文段

      5.TCP报文段作为IP数据报传输,而IP数据报达到可能会失序,因此TCP报文到达可能会失序

      6.TCP的接收端会丢失重复的数据

      7.TCP提供流量控制,链接每一方都有固定大小的缓冲空间,接受段只允许另一端发送接收端缓冲区的数据

      在两个通过TCP交换8bit字节构成的字节流,TCP不再字节流插入记录标示符,成为字节流服务(byte stream service)

     2.数据格式

      

      每个TCP段都包含源端和目的端的端口号,用于寻找发送端和收端应用进程,有时一个IP地址和一个端口号也称作插口(socket)

      序号用来表示TCP端向TCP收端发送的数据字节流,表示在这个报文段中的第一数据字节,如果将字节流看做2个应用程序间的单向流动,则TCP用序号对每个字节进行行数,序号是32bit的无符号数,序号到达2的32次方-1后又从0开始

          当建立一个连接时,SYN标志为1,序号字段包含由这个主机选择的该连接的初始序号ISN,该主机要发送数据的第一个字节序号为ISN加1,因为SYN标志消耗了一个序号.

      TCP为应用层提供了全双工服务,这意味数据在两个方向上独立进行传输,因此,连接的每一端必须保持没个方向上的传输序号。

      首部长度给出首部32bit字节的数目,需要这个值因为任选字段的长度是可变的。  

      在TCP首部有6个字段,多个可同时被设置为1.

      URG 紧急指针

      ACK 确认序号有效

      PSH 接收方应该将这个报文发给应用层

      RST 重建连接

      SYN 同步序号用来发起一个连接

      FIN 发送端完成任务

      

      TCP流量控制有连接的每一端通过声明窗口大小来提供,窗口大小为字节数,

  • 相关阅读:
    b_lc_数组中最大数对和的最小值(排序+思维 | 进阶:第k)
    b_lc_使用服务器处理任务(模拟 + 堆)
    b_lc_插入后的最大值(贪心+区分正负数)
    b_lc_蓄水(反向思维:枚举取水次数)
    万能JDBC工具类【DBUtil 】
    Eureka服务注册中心
    springboot dubbo+zookeeper
    Thymleaf引擎模板
    多环境切换 & JSR303数据校验
    yaml配置注入
  • 原文地址:https://www.cnblogs.com/EraserHead/p/6692625.html
Copyright © 2020-2023  润新知