TCP系列(一)-介绍TCP

服务

TCP和UDP同样使用IP提供的服务,但是TCP提供的是面向连接,可靠的字节流服务

  • 面向连接

    使用TCP进行通信双方,必须先建立连接,然后进行数据交换

  • 可靠服务

    • 将应用数据分割成固定大小的报文段
    • 每次发出报文,会启动定时器,在规定时间内,没有确认,则会进行重发
    • 收端会舍弃重复TCP报文段
    • 发端收到TCP报文段后,会进行回应,及ACK回应
    • TCP首部存在校验和,防止数据传输过程中,数据发生了篡改,收端会舍弃校验失败的TCP报文段
    • 发端会对诸多TCP报文段,进行编排,给定序号,方便收端进行数据合并
    • TCP可以做到流量控制,滑动窗口,TCP通知双方自己的发送和接受能力,即窗口大小
  • 字节流
    TCP不会修改任何数据内容

在这里插入图片描述

首部

在这里插入图片描述

  • 端口号:识别收端发端的应用进程,结合IP首部的IP地址,可以建立唯一的连接

  • 序号:TCP将应用数据分割大小固定的无数报文段,序号指每个报文段的第一个字节,在整个应用数据的偏移量;

    在TCP建立连接期间,序号被系统赋予初始值,即ISN(init sequence number),三次握手之间,不会增加,只有在传送数据之后,序号为上一个报文段序号+上一个报文段本身长度,当数值来到2^32-1时,会归0,进行重新累加

  • 确认序号

    • 表示收端想要接收的下一个TCP报文段的序号;
    • 所有TCP报文段中,除了SYN报文段,其余报文段都有确认序号;
    • 确认序号是收端用来给发端进行传送确认的,发端,一段时间内,发送了多个TCP报文段,如果对每一个TCP报文段进行确认回应,那么,回应的ACK,是对应TCP报文段序号+1
  • 首部长度:本TCP报文段,首部中32bit数目

  • 标志比特:

    • URG:紧急指针
    • ACK:确认序号有效
    • PSH:收端应该尽快将本报文段交给应用层
    • RST:重建连接
    • SYN:同步序号用来发起一个连接,后面会详细讲解
    • FIN:发端完成发送

相关推荐

  1. <span style='color:red;'>TCP</span>

    TCP

    2024-07-20 07:00:02      38 阅读
  2. QT TCP通信介绍

    2024-07-20 07:00:02       29 阅读
  3. TCP/IP协议介绍

    2024-07-20 07:00:02       43 阅读
  4. 介绍TCP窗口

    2024-07-20 07:00:02       32 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-20 07:00:02       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-20 07:00:02       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-20 07:00:02       45 阅读
  4. Python语言-面向对象

    2024-07-20 07:00:02       55 阅读

热门阅读

  1. RK3399 Android7.1.2识别UAS移动硬盘问题

    2024-07-20 07:00:02       15 阅读
  2. 题解:[ABC358E] Alphabet Tiles

    2024-07-20 07:00:02       18 阅读
  3. Flutter 教程实战笔记

    2024-07-20 07:00:02       17 阅读
  4. MQTT剩余长度字段的编码方案

    2024-07-20 07:00:02       17 阅读
  5. nng协议之nng_listen

    2024-07-20 07:00:02       19 阅读
  6. 03-Spring AOP中的设计模式

    2024-07-20 07:00:02       16 阅读
  7. Unity如何使摄像机视锥体外的物体不被剔除

    2024-07-20 07:00:02       15 阅读
  8. 微信小程序开发入门指南

    2024-07-20 07:00:02       17 阅读