0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

超硬核TCP、UDP基础知识汇总1

jf_78858299 来源:阿Q正砖 作者:阿Q正砖 2023-02-15 09:57 次阅读

今天开始进行计算机网络相关的总结及细节剖析,将会对常考的相关知识进行更详细的解读,本章是TCP相关的,图文并茂,也是花了作者一个周末时间搞定的,欢迎大家点赞转发。

那就开始正文喽~

1、TCP主要特点

1.面向连接:

•TCP连接只能有两个端点,TCP连接是一对一的。

•TCP提供可靠连接服务。

•TCP提供全双工通信

2.面向字节流:

•TCP和应用程序交互是一次一个数据块进行交互。但是TCP会把应用程序交下来的数据块看成一串无结构的字节流。

•TCP报文收发之间的数据块不一定相同(因为我不一定一次接受多少受网络情况,拥塞情况控制)但是字节流一定相同。

•TCP根据对方的接收能力和网络拥塞情况将字节流分成大小不同的段发送给接收缓存。

图片

3.TCP的连接套接字连接两端的插口包含IP和端口号。全双工抽象连接。

2、TCP的报文格式

图片

1.源端口,目的端口各占两个字节是运输层与应用层交互的接口

2.序号(4B):seq,字节序号本报文段所携带数据的第一个字节的序号。

3.确认号(4B):ack,期望对方下次发来数据的第一个字节的序号。

4.数据偏移(4bit):标志着报文段数据部分起始位置距离报文段起始位置的距离即首部长度。

5.URG(1B),紧急位置1,立刻将TCP发送缓存中的字节流打包成报文发送出去。

6.ACK(1B),ACK = 1代表确认号有效。

7.PSH(1B),PSH = 1,接收方立刻将接收缓存数据上交给应用进程。

8.RST(1B),RST = 1,TCP连接中出现严重差错必须释放连接然后在重新建立运输连接。

9.SYN(1B),SYN = 1,表示这是一个连接请求或连接接受的报文。

10.FIN(1B),FIN = 1,用来释放一个连接。FIN为1表明报文段发送端已发送完成,并要求释放连接。

11.窗口(2B),告诉对方从确认号开始接收方目前允许对方发送的数据量。

12.检验和(2B),类似于UDP首部和数据这两部分计算时要在TCP报文段之前加上伪首部。

13.紧急指针,16位,当URG = 1时,这部分记录了紧急数据的大小把它放在数据部分的最前面发出去。

14.选项字段:长度可变最大报文段数据部分长度MSS,MSS告诉对方TCP我缓存最大能接受的长度为MSS。

MSS太大IP层分片只要有一片出错就得重传。

MSS太小效率低下。

15.其它选项:

窗口扩大选项:占3字节,其中一个字节S为窗口扩大的位数,比如(16+S)但是最大值不能超过30位

时间戳选项:

1.计算往返时延。

发送时打一个时间戳放在timestamp中,收到确认报文后再打一个时间戳此时将之前的timestamp中的时间放在timestamp echo中然后将收到确认报文的时间戳放在timestamp中二者相减可以得到RTT。

2.防止序号回绕。

由于序号编码空间是32位的所以一共是2的32次方。对于高带宽的网络很容易消耗完,也就是说接收方可能会收到两次相同序号的报文,如果不加标记,接收方会认为这两个报文是相同的然后就会丢弃。时间戳选项会将两个报文标记好时间戳这样接收方就不会丢弃了。

图片

16.填充。

为了保证TCP首部是4字节的整数倍。

3、TCP的可靠传输

3.1、TCP连接的两个端点都有两个窗口:

发送窗口:准备发送的数据和已发送但未收到确认的数据。

接收窗口:按序接收但没有上交的数据,不按序接收的数据。

图片

•P3 - P1 = A的发送窗口(又称为通知窗口)

•P2 - P1 = 已发送但尚未收到确认的字节数

•P3 - P2 = 允许发送但尚未发送的字节数(又称为可用窗口)

如图所示发送窗口按序发送窗口中的字节流,如果发送且收到确认则滑出窗口如果已发送但未收到确认则留在发送窗口中用来准备重传。

接收窗口将按序接收字节流如果收到的字节流无序则仍然会留在接收窗口中。比如我先收到了37则37不会被确认交付主机因为前面的34-36还没有被接收当前面的34-36被接收后34-37才会一起被交付主机。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 缓冲区
    +关注

    关注

    0

    文章

    33

    浏览量

    9092
  • TCP
    TCP
    +关注

    关注

    8

    文章

    1348

    浏览量

    78950
  • UDP
    UDP
    +关注

    关注

    0

    文章

    322

    浏览量

    33853
收藏 人收藏

    评论

    相关推荐

    详细的射频基础知识

    详细的射频基础知识
    发表于 11-04 09:09 2151次阅读

    基础知识汇总!!!

    基础知识汇总
    发表于 11-07 18:14

    第16章 UDP用户数据报协议基础知识

    ) 16.1 初学者重要提示 16.2 UDP基础知识参考资料 16.3 UDP基础知识点 16.4 TCP
    发表于 11-02 17:27

    TCP协议基础知识

    TCP 是互联网核心协议之一,本文介绍它的基础知识
    的头像 发表于 10-16 10:29 3589次阅读
    <b class='flag-5'>TCP</b>协议<b class='flag-5'>基础知识</b>

    tcpudp协议的异同

    UDP 校验和则是包含 UDP 首部和数据在内的校验结果。 TCP协议 TCP协议基于网络层的 IP 协议提供的是有连接、可靠服务,是基于字节流的。
    的头像 发表于 11-12 14:45 3993次阅读
    <b class='flag-5'>tcp</b>和<b class='flag-5'>udp</b>协议的异同

    分散控制系统DCS基础知识汇总文件下载

    分散控制系统DCS基础知识汇总文件下载
    发表于 04-14 17:10 32次下载
    分散控制系统DCS<b class='flag-5'>基础知识</b><b class='flag-5'>汇总</b>文件下载

    华为EMC基础知识汇总资源下载

    华为EMC基础知识汇总资源下载
    发表于 06-04 11:10 127次下载

    传感器基础知识及特性资源汇总下载

    传感器基础知识及特性资源汇总下载
    发表于 07-18 09:36 25次下载

    硬核TCPUDP基础知识汇总2

    TCP主要特点** 1.面向连接: •TCP连接只能有两个端点,TCP连接是一对一的。 •TCP提供可靠连接服务。
    的头像 发表于 02-15 09:57 759次阅读
    <b class='flag-5'>超</b><b class='flag-5'>硬核</b><b class='flag-5'>TCP</b>、<b class='flag-5'>UDP</b><b class='flag-5'>基础知识</b><b class='flag-5'>汇总</b>2

    硬核TCPUDP基础知识汇总3

    TCP主要特点** 1.面向连接: •TCP连接只能有两个端点,TCP连接是一对一的。 •TCP提供可靠连接服务。
    的头像 发表于 02-15 09:57 539次阅读
    <b class='flag-5'>超</b><b class='flag-5'>硬核</b><b class='flag-5'>TCP</b>、<b class='flag-5'>UDP</b><b class='flag-5'>基础知识</b><b class='flag-5'>汇总</b>3

    硬核TCPUDP基础知识汇总4

    TCP主要特点** 1.面向连接: •TCP连接只能有两个端点,TCP连接是一对一的。 •TCP提供可靠连接服务。
    的头像 发表于 02-15 09:57 580次阅读
    <b class='flag-5'>超</b><b class='flag-5'>硬核</b><b class='flag-5'>TCP</b>、<b class='flag-5'>UDP</b><b class='flag-5'>基础知识</b><b class='flag-5'>汇总</b>4

    TCP/UDP网络编程的基础知识合集1

    本文主要记录TCP/UDP网络编程的基础知识,采用TCP/UDP实现宿主机和目标机之间的网络通信。
    的头像 发表于 05-18 17:31 672次阅读

    TCP/UDP网络编程的基础知识合集2

    本文主要记录TCP/UDP网络编程的基础知识,采用TCP/UDP实现宿主机和目标机之间的网络通信。
    的头像 发表于 05-18 17:31 616次阅读

    TCP/UDP网络编程的基础知识合集3

    本文主要记录TCP/UDP网络编程的基础知识,采用TCP/UDP实现宿主机和目标机之间的网络通信。
    的头像 发表于 05-18 17:31 754次阅读
    <b class='flag-5'>TCP</b>/<b class='flag-5'>UDP</b>网络编程的<b class='flag-5'>基础知识</b>合集3

    TCPUDP的基本区别

    TCPUDP基本区别 基于连接与无连接 TCP要求系统资源较多,UDP较少; UDP程序结构较简单 流模式(
    的头像 发表于 11-13 15:27 4527次阅读
    <b class='flag-5'>TCP</b>与<b class='flag-5'>UDP</b>的基本区别