计算机基础——TCP基础知识

这篇具有很好参考价值的文章主要介绍了计算机基础——TCP基础知识。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

计算机基础——TCP基础知识

一、TCP报文首部的字段及作用

16位源端口号 16位目的端口号
32位序号
32位确认号
4位头部长度 6位保留 URG ACK PSH RST SYN FIN 16位窗口大小
16位校验和 16位紧急指针
选项(长度可变)
填充
  • 16位端口号:源端口号,主机该报文段是来自哪里;目标端口号,要传给哪个上层协议或应用程序
  • 32位序号:一次TCP通信(从TCP连接建立到断开)过程中某一个传输方向上的字节流的每个字节的编号。
  • 32位确认号:用作对另一方发送的tcp报文段的响应。其值是收到的TCP报文段的序号值加1。
  • 4位头部长度:表示tcp头部有多少个32bit字(4字节)。因为4位最大能标识15,所以TCP头部最长是60字节。
  • 6位标志位:URG(紧急指针是否有效),ACk(表示确认号是否有效),PSH(缓冲区尚未填满),RST(表示要求对方重新建立连接),SYN(建立连接消息标志接),FIN(表示告知对方本端要关闭连接了)
  • 16位窗口大小:是TCP流量控制的一个手段。这里说的窗口,指的是接收通告窗口。它告诉对方本端的TCP接收缓冲区还能容纳多少字节的数据,这样对方就可以控制发送数据的速度。
  • 16位校验和:由发送端填充,接收端对TCP报文段执行CRC算法以检验TCP报文段在传输过程中是否损坏。注意,这个校验不仅包括TCP头部,也包括数据部分。这也是TCP可靠传输的一个重要保障。
  • 16位紧急指针:一个正的偏移量。它和序号字段的值相加表示最后一个紧急数据的下一字节的序号。因此,确切地说,这个字段是紧急指针相对当前序号的偏移,不妨称之为紧急偏移。TCP的紧急指针是发送端向接收端发送紧急数据的方法。

二、TCP的特点

  • TCP是面向连接的运输层协议

  • 点对点,每一条TCP连接只能有两个端点

  • TCP提供可靠交付的服务

  • TCP提供全双工通信

  • 面向字节流

    基于连接,可靠的,有序的,双向的一种字节流传输方式,TCP要发送的数据先放入缓冲区内,在通信的时候TCP会从缓冲区内取出对应的数据,在进行头部的封装进行发送

    好处:传输比较灵活

    坏处:

    • 会产生粘包问题——将多条数据当做一条进行处理,无法分辨数据边界
      • 本质原因:TCP并不维护数据边界
      • 解决方案:需要程序员在应用层进行数据边界管理,区分数据边界
      • 具体技术:特殊字符,数据定长,应用层头部加上数据长度字段

三、TCP和UDP的区别

  1. TCP面向连接;UDP是无连接的,即发送数据之前不需要建立连接。

  2. TCP提供可靠的服务;UDP不保证可靠交付。

    1. TCP的连接是基于三次握手,断开是基于四次挥手。确保连接和断开的可靠性
    2. TCP有状态;记录哪些数据发送了,哪些数据被接收了,哪些没有被接收,并且保证数据包按序到达,保证数据传输不会出差错
    3. 可控制:有数据包校验、ACK应答、超时重传(发送方)、失序数据重传(接收方)、丢弃重复数据、流量控制(滑动窗口)和拥塞控制等机制
  3. TCP面向字节流,把数据看成一连串无结构的字节流;UDP是面向报文的。

  4. TCP有拥塞控制;UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如实时视频会议等)。

  5. 每一条TCP连接只能是点到点的;UDP支持一对一、一对多、多对一和多对多的通信方式。

  6. TCP首部开销20字节;UDP的首部开销小,只有8个字节。

四、TCP和UDP分别对应的常见应用层协议

1.基于TCP的应用层协议

  • HTTP:HyperText Transfer Protocol(超文本传输协议),默认端口80
  • FTP: File Transfer Protocol (文件传输协议), 默认端口(20用于传输数据,21用于传输控制信息)
  • SMTP: Simple Mail Transfer Protocol (简单邮件传输协议) ,默认端口25
  • TELNET: Teletype over the Network (网络电传), 默认端口23
  • SSH:Secure Shell(安全外壳协议),默认端口 22

2.基于UDP的应用层协议

  • DNS : Domain Name Service (域名服务),默认端口 53
  • TFTP: Trivial File Transfer Protocol (简单文件传输协议),默认端口69
  • SNMP:Simple Network Management Protocol(简单网络管理协议),通过UDP端口161接收,只有Trap信息采用UDP端口162。

五、TCP的粘包和拆包

TCP是面向流,没有界限的一串数据。TCP底层并不了解上层业务数据的具体含义,它会根据TCP缓冲区的实际情况进行包的划分,所以在业务上认为,一个完整的包可能会被TCP拆分成多个包进行发送也有可能把多个小的包封装成一个大的数据包发送,这就是所谓的TCP粘包和拆包问题。

为什么会产生粘包和拆包?

  • 要发送的数据小于TCP发送缓冲区的大小,TCP将多次写入缓冲区的数据一次发送出去,将会发生粘包;
  • 接收数据端的应用层没有及时读取接收缓冲区中的数据,将发生粘包;
  • 要发送的数据大于TCP发送缓冲区剩余空间大小,将会发生拆包;
  • 待发送数据大于MSS(最大报文长度),TCP在传输前将进行拆包。即TCP报文长度-TCP头部长度>MSS。

解决方案

  • 发送端将每个数据包封装为固定长度
  • 在数据尾部增加特殊字符进行分割
  • 将数据分为两部分,一部分是头部,一部分是内容体;其中头部结构大小固定,且有一个字段声明内容体的大小。

六、TCP的滑动窗口机制

TCP 利用滑动窗口实现流量控制。流量控制是为了控制发送方发送速率,保证接收方来得及接收。 TCP会话的双方都各自维护一个发送窗口和一个接收窗口。接收窗口大小取决于应用、系统、硬件的限制。发送窗口则取决于对端通告的接收窗口。接收方发送的确认报文中的window字段可以用来控制发送方窗口大小,从而影响发送方的发送速率。将接收方的确认报文window字段设置为 0,则发送方不能发送数据。

计算机基础——TCP基础知识,计算机基础,tcp/ip,网络,网络协议

于对端通告的接收窗口。接收方发送的确认报文中的window字段可以用来控制发送方窗口大小,从而影响发送方的发送速率。将接收方的确认报文window字段设置为 0,则发送方不能发送数据。

[外链图片转存中…(img-K6LdSSp7-1705311813516)]

TCP头包含window字段,16bit位,它代表的是窗口的字节容量,最大为65535。这个字段是接收端告诉发送端自己还有多少缓冲区可以接收数据。于是发送端就可以根据这个接收端的处理能力来发送数据,而不会导致接收端处理不过来。接收窗口的大小是约等于发送窗口的大小。文章来源地址https://www.toymoban.com/news/detail-809623.html

到了这里,关于计算机基础——TCP基础知识的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 计算机网络基础-OSI七层模型 和 TCP/IP四层模型的对比

    OSI七层模型: 理论上的网络通信模型 记忆: (物、链、网、输、会、示、用) TCP/IP四层模型: 实际上的网络通信标准 最上层的,也是我们能直接接触到的就是 应用层 ( Application Layer ),我们电脑或手机使用的应用软件都是在应用层实现。那么,当两个不同设备的应用需要

    2024年02月15日
    浏览(39)
  • [TCP] TCP/IP 基础知识问答

    内容更新中 UDP(User Datagram Protocol),是无连接的、不可靠的传输层协议。 源port(16位),目标port(16位),总长度(16位),校验和(16位) 根据MTU的大小来判断。 MTU是数据链路层数据的最大长度,超出MTU大小的数据会被分片。 比如以太网的MTU大小是1500,IP层的头大小是20字节,

    2024年01月19日
    浏览(46)
  • 计算机基础知识

    参考链接:https://blog.csdn.net/ChineseSoftware/article/details/123176978 https://www.cnblogs.com/8023-CHD/p/11067141.html https://blog.csdn.net/qq_42033567/article/details/108088514 http与https的区别 HTTP 的URL以http:// 开头,而HTTPS 的URL 以https:// 开头 HTTP的默认端口是80,而HTTPS的默认端口是443 在OSI网络模型中,HTT

    2024年02月10日
    浏览(63)
  • 计算机基础知识(基础入门小白专属)

    ♥️ 作者:小刘在这里 ♥️ 每天分享云计算网络运维课堂笔记,疫情之下,你我素未谋面,但你一定要平平安安,一  起努力,共赴美好人生! ♥️ 夕阳下,是最美的,绽放,愿所有的美好,再疫情结束后如约而至。 目录 计算机的发展史 计算机的硬件组成 计算机的分类

    2024年02月08日
    浏览(57)
  • 计算机基础知识题精选

    1.网络钓鱼欺骗是社会工程学的一种方式,下列关于社会工程学的说法中错误的是( ) A.社会工程学利用了人性的弱点;B.社会工程学需要结合常识;C.社会工程学的目的是获取秘密信息;D.谎言越多,社会工程学的欺骗效果越好 正确答案是:D 2.根据恶意代码特征对恶意代码

    2023年04月12日
    浏览(58)
  • 计算机基础知识(基础入门小白专属)二

      ♥️ 作者:小刘在这里 ♥️ 每天分享云计算网络运维课堂笔记,疫情之下,你我素未谋面,但你一定要平平安安,一  起努力,共赴美好人生! ♥️ 夕阳下,是最美的,绽放,愿所有的美好,再疫情结束后如约而至。 目录 vmware workstation  的用法 扩展部分

    2024年02月02日
    浏览(50)
  • 【收藏】IP知识百科-TCP/IP协议栈&数通基础

    数据链路层相关 什么是ARP 什么是MTU 什么是CRC TCP/IP协议栈 什么是ICMP 什么是DHCP 什么是NAT IPv6 访问控制/防火墙 什么是ACL 什么是NGFW VLAN 什么是VLAN OVERLAY 什么是Overlay 什么是VxLAN1 什么是VxLAN2 VXLAN中的RT、RD是什么 控制平面 什么是MPLS 什么是EVPN1 什么是EVPN2 路由协议 什么是OSPF

    2024年02月07日
    浏览(51)
  • 【opencv】计算机视觉基础知识

    目录 前言 1、什么是计算机视觉 2、图片处理基础操作 2.1 图片处理:读入图像 2.2 图片处理:显示图像 2.3 图片处理:图像保存 3、图像处理入门基础 3.1 图像成像原理介绍 3.2 图像分类 3.2.1 二值图像 3.2.2灰度图像 3.2.3彩色图像(RGB) 4、像素处理操作 4.1 读取像素 4.2 修改像素

    2024年02月04日
    浏览(66)
  • 计算机基础知识点汇总

    1、指令是指示计算机执行某种操作的命令,包括操作码和地址码两部分。 2、目前常见的指令系统有复杂指令系统(CISC)和精简指令系统(RISC)。 3、计算机的工作过程:取指令、分析指令、执行指令。 4、未配置任何软件的计算机叫裸机,注意不是指安装过操作系统的计算

    2024年02月10日
    浏览(53)
  • 详解TCP/IP协议第一篇:网络基础知识

    😉😉 学习交流群: ✅✅1:这是孙哥suns给大家的福利! ✨✨2:我们免费分享Netty、Dubbo、k8s、Mybatis、Spring...应用和源码级别的视频资料 🥭🥭3:QQ群:583783824   📚📚  工作微信:BigTreeJava 拉你进微信群,免费领取! 🍎🍎4:本文章内容出自上述:Spring应用课程!💞💞

    2024年02月09日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包