当前位置: 首页 > news >正文

TCP...

什么是TCP?

TCP是面向连接的、可靠的、基于字节流的传输层通信协议

  • 面向连接:一定是「一对一」才能连接,不能像 UDP 协议可以一个主机同时向多个主机发送消息,也就是一对多,是无法做到的;
  • 字节流:用户消息通过 TCP 协议传输时,消息可能会被操作系统「分组」成多个的 TCP 报文,如果接收方的程序如果不知道「消息的边界」,是无法读出一个有效的用户消息的。并且 TCP 报文是「有序的」,当「前一个」TCP 报文没有收到的时候,即使它先收到了后面的 TCP 报文,那么也不能扔给应用层去处理,同时对「重复」的 TCP 报文会自动丢弃。

为什么需要TCP?

首先网络模型拆分这么多层,是分层思想的成果

传输层专门负责数据的传输可靠

网络层是不可靠的,它不保证网络包的按序交付以及数据完整性

 

序列号(Seq):在建立连接时由计算机生成的随机数作为其初始值

确认应答号(Ack):指下一次「期望」收到的数据的序列号

二者是TCP保证消息可靠传输的一种手段

控制位:

  • URG(Urgent):该位为 1 时,此报文中有紧急数据,需要优先处理
  • ACK(Acknowledgment):该位为 1 时,「确认应答」的字段变为有效,TCP 规定除了最初建立连接时的 SYN 包之外该位必须设置为 1 。
  • PSH(push):该位为 1 时,收到此报文时表示立即将数据交给应用层处理,不等缓冲区填满或等待更多数据
  • RST(Reset):该位为 1 时,表示 TCP 连接中出现异常必须强制断开连接。
  • SYN(Synchronize):该位为 1 时,表示希望建立连接,并在其「序列号」的字段进行序列号初始值的设定。
  • FIN:该位为 1 时,表示今后不会再有数据发送,希望断开连接。当通信结束希望断开连接时,通信双方的主机之间就可以相互交换 FIN 位为 1 的 TCP 段

窗口大小:

发送方的窗口大小,告诉对方自己缓冲区还能接收多少数据

校验和:

发送端填充,接收端检验TCP报文是否有损坏

相关文章:

  • 4部署kibana:5601
  • 网络安全专业好就业吗?
  • django model.object.filter 不等于多个值
  • FFmpeg 是什么?为什么?怎么用?
  • compare-form.vue 的 v 来源(来自父组件index.vue中的row行数据)
  • linux下安装nginx步骤详解(源码安装方式)
  • FFmpeg 命令行全解析:高效音视频处理从入门到精通
  • 玩机日记 12 fnOS使用lucky反代https转发到外网提供服务
  • python 基本用法
  • Mac 提示「未打开“Sketch.app”」Apple 无法验证“Sketch.app”是否包含可能危害Mac安全或泄露隐私的恶意软件
  • Flutter - 基础Widget
  • [ComfyUI]官方已支持Skyreels混元图生视频,速度更快,效果更好(附工作流)
  • 力扣hot100 —— 电话号码字母组合; 子集 (非回溯做法)简单易懂
  • Windows安装NVIDIA显卡CUDAD调用GPU,适用于部署deepseek r1
  • halcon三维点云数据处理(二十七)remove_bin_for_3d_object_localization
  • 传统企业可观测建设之路
  • IDEA关闭SpringBoot程序后仍然占用端口的排查与解决
  • 【Linux】Ubuntu服务器的安装和配置管理
  • 在线VS离线TTS(语音合成芯片)有哪些优势-AIOT智能语音产品方案
  • Unity打包APK报错 using a newer Android Gradle plugin to use compileSdk = 35
  • 特朗普:将于19日分别与普京和泽连斯基通话
  • 乌称苏梅州一公共汽车遭俄军袭击,致9死4伤
  • 价格周报|本周猪价继续下探,机构预计今年猪价中枢有支撑
  • 大环线呼之欲出,“金三角”跑起来了
  • 音乐节困于流量
  • 北京警方:海淀发生小客车刮碰行人事故4人受伤,肇事司机已被查获