目录

传输层,TCP和UDP基本知识

TCP与UDP的比较:

端口号

1.端口号确定的方法

UDP(User Datagram Protocol)

TCP(Transmission Control Protocol)

通过序列号与确认应答提高可靠性

重发超时

连接管理

TCP 以段为单位发送数据

窗口控制

流控制

拥塞控制

其他传输层协议

UDP-Lite

SCTP

DCCP

首部格式

UDP首部格式

TCP首部格式


传输层,TCP和UDP基本知识

传输层定义:IP 首部中有一个协议字段,用来标识网络层(IP) 的上一层所采用的是哪一种传输层协议。同样,传输层的TCP 和UDP, 为了识别自己所传输的数据部分究竟应该发给哪个应用,也设定了这样一个编号。这个编号就是端口号。

通信处理:传输协议TCP、UDP通过接受数据中的目标端口号识别目标处理程序。

TCP定义:TCP 是面向连接的、可靠的流协议。流就是指不间断的数据结构,你可以把它想象成排水管道中的水流。当应用程序采用TCP 发送消息时,虽然可以保证发送的顺序,但还是犹如没有任何间隔的数据流发送给接收端。

TCP的功能:TCP 为提供可靠性传输,实行“顺序控制”或“重发控制“机制。此外还具备“流控制(流量控制)”、"拥塞控制”、提高网络利用率等众多功能。

UDP的定义:UDP 是不具有可靠性的数据报协议。细微的处理它会交给上层的应用去完成。在UDP 的情况下,虽然可以确保发送消息的大小, 却不能保证消息一定会到达。因此,应用有时会根据自己的需要进行重发处理。

TCP与UDP的比较:

  1. TCP用于在传输层有必要实现可靠传输的情况。由于它是面向有连接并具备顺序控制、重发控制等机制的,所以它可以为应用提供可靠传输。
  2. UDP 主要用于那些对高速传输和实时性有较高要求的通信或广播通信。
  3. 在多播与广播通信中也使用UDP 而不是TCP 。RIP 、DHCP 等基于广播的协议也要依赖于UDP 。

端口号

定义:端口号用来识别同一台计算机中进行通信的不同应用程序。因此,它也被称为程序地址。

根据端口号识别应用:

不同通信的标识:TCP/IP 或UDP/IP 通信中通常采用5 个信息来识别一个通信。它们是"源IP 地址”、“目标IP 地址”、“协议号”、"源端口号”、“目标端口号”。只
要其中某一项不同,则被认为是其他通信。

1.端口号确定的方法

  • 标准既定的端口号(静态方法)

定义:它是指每个应用程序都有其指定的端口号。但并不是说可以随意使用任何一个端口号。每个端口号都有其对应的使用目的。

知名端口号一般由0到1023 的数字分配而成。应用程序应该避免使用知名端口号进行既定目的之外的通信,以免产生冲突。除知名端口号之外,还有一些端口号也被正式注册。关千知名端口号以及注册端口号的最新消息,请参考如下网址:https://www.iana.org/assignments/service-names-port-numbers

  • 时序分配法(动态方法)

定义:服务端有必要确定监听端口号,但是接受服务的客户端没必要确定端口号。

在这种方法下,客户端应用程序可以完全不用自己设置端口号,而全权交给操作系统进行分配。操作系统可以为每个应用程序分配互不冲突的端口号。。这样,操作系统就
可以动态地管理端口号了。

端口号与协议的关系:关系:端口号由其使用的传输层协议决定。因此,不同的传输协议可以使用相同的端口号。例如, TCP 与UDP 使用同一个端口号,但使用目的各不相同。这是因为端口号上的处理是根据每个传输协议的不同而进行的。

UDP(User Datagram Protocol)

UDP的定义:UDP(用户数据报协议) 不提供复杂的控制机制,利用IP 提供面向无连接的通信服务。并且它是将应用程序发来的数据在收到的那一刻,立即按照原样发送到网络上的一种机制。

特点:出现网络拥堵的情况下, UDP 也无法进行流量控制等避免网络拥塞的行为。此外,传输途中即使出现丢包, UDP 也不负责重发。甚至当出现包的到达顺序乱掉时也没有纠正的功能。如果需要这些细节控制,那么不得不交由采用UDP 的应用程序去处理。

应用:

  • 包总量较少的通信(DNS 、SNMP 等)
  • 视频、音频等多媒体通信(即时通信)
  • 限定于LAN 等特定网络中的应用通信
  • 广播通信(广播、多播)

TCP(Transmission Control Protocol)

TCP的定义:传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。

特点和目的:TCP 通过检验和、序列号、确认应答、重发控制、连接管理以及窗口控制等机制实现可靠性传输。

通过序列号与确认应答提高可靠性

确认应答(ACK):在TCP 中,当发送端的数据到达接收主机时,接收端主机会返回一个已收到消息的通知。这个消息叫做确认应答。

TCP 通过肯定的确认应答(ACK) 实现可靠的数据传输。当发送端将数据发出之后会等待对端的确认应答。如果有确认应答,说明数据已经成功到达对端。反之,则数据丢失的可能性很大。

第三种情况:对方已经收到数据,但是返回的确认应答在途中丢失,或者因为其他原因导致确认应答延迟到达。这种情况也会导致发送端没有收到确认应答,认为数据没有到达目的地,从而进行重发。

引发的问题:对于源主机来说,只要按照重发机制重发数据即可。但是对于目标主机来说,这简直是一种“灾难”。它会反复收到相同的数据。而为了对上层应用提供可靠的传输,必须得放弃重复的数据包。

解决的问题:要能够识别目标主机是否已经接收数据,又能判断目标主机是否需要接收。

序列号机制的引入

定义:序列号是按顺序给发送数据的每一个字节(8 位字节)都标上号码的编号。

工作原理:目标i主机查询接收到的数据中的TCP 首部中的序列号和数据的长度,将自己下一步应该接收的序号(即TCP首部序列号+数据长度)作为确认应答返送回去。就这样,通过序列号和确认应答号, TCP 可以实现可靠传输。

问题?似乎并未解决第三种情况出现的问题?????

重发超时

定义:重发超时是指在重发数据之前,等待确认应答到来的那个特定时间间隔。如果超过了这个时间仍未收到确认应答,发送端将进行数据重发。

需要考虑的因素:TCP要求无论处在何种网络环境下都要提供高性能通信,并且无论网络拥堵发生何种变化,都必须保持这一特性。

计算方式:每次发包时都会计算往返时间(Round Trip Time,RTT)及其偏差(RTT时间波动的值、方差。有时也叫抖动)。将这个往返时间和偏差相加,重发超时的时间就是比这个总和要稍大一点。

实际工作方式:在BSD 的Unix 以及Windows 系统中,超时都以0.5 秒为单位进行控制,因此重发超时都是0.5 秒的整数倍。初始值,重发超时一般设置6秒左右。数据被重发之后若还是收不到确认应答,则进行再次发送。此时,等待确认应答的时间将会以2 倍、4 倍的指数函数延长。达到一定重发次数之后,如果仍没有任何确认应答返回,就会判断为网络或对端主机发生了异常,强制关闭连接。并且通知应用通信异常强行终止。

连接管理

面向有连接:指的是指在数据通信开始之前先做好通信两端之间的准备工作。

TCP 提供面向有连接的通信传输。UDP 是一种面向无连接的通信协议,因此不检查对端是否可以通信,直接将UDP 包发送出去。TCP 与此相反,客户端会在数据通信之前,通过TCP 首部发送一个SYN 包作为建立连接的请求等待服务端的确认应答。如果服务端发来确认应答,则认为可以进行数据通信。如果服务端的确认应答未能到达,就不会进行数据通信。此外,在通信结束时会进行断开连接的处理(FIN 包)。

一个连接的建立与断开,正常过程至少需要来回发送7 个包才能完成(3次握手,4次挥手)

TCP 以段为单位发送数据

MSS:“最大消息长度”(MSS: Maximum Segment Size) 。最理想的情况是,最大消息长度正好是IP 中不会被分片处理的最大数据长度。TCP 在传送大量数据时,是以MSS 的大小将数据进行分割发送。进行重发时也是以MSS 为单位。

怎么确定MSS:MSS 是在三次握手的时候,在两端主机之间被计算得出。两端的主机在发出建立连接的请求时,会在TCP 首部中写入MSS 选项,告诉对方自己的接口能够适应的MSS 的大小。然后会在两者之间选择一个较小的值投入使用。

窗口控制

1.利用窗口控制提高速度

问题出现:TCP 以1 个段为单位,每发一个段进行一次确认应答的处理。这样的传输方式有一个缺点,那就是,包的往返时间越长,网络的吞吐量会越差,通信性能就越低。

窗口解决的问题:即使往返时间较长也能控制网络性能的下降。

窗口大小:指无需等待确认应答而可以继续发送数据的最大值。如图,窗口大小为4个段。

滑动窗口机制+缓冲区

在这个窗口内的数据即便没有收到确认应答也可以发送出去。不过,在整个窗口的数据确认应答没有达到之前,如果部分数据出现丢包,那么发送端仍然要负责重发。因此,客户端要设置缓冲区来保留这些带重发的数据,直到收到它们的应答。当数据发出后若如期收到确认应答就可以不用再进行重发,此时数据就可以从缓存区清除。收到确认应答的情况下,将窗口滑动到确认应答中的序列号的位置。这样可以顺序地将多个段同时发送提高通信性能。这种机制也被称为滑动窗口控制。

上述工作过程的还有一种情况:部分数据不是出现丢包,服务器已经收到数据,但是确认应答未能返回。这种情况下,客户端应该是不需进行重发的。在没有使用窗口控制的时候,客户端会重发。

2.窗口控制使得某些确认应答即便丢失也无需重发。

3.窗口控制比之前的超时管理更加高效

当某一报文段丢失后,发送端会一直收到序号为1001 的确认应答,这个确认应答好像在提醒发送端“我想接收的是从1001 开始的数据“。因此,在窗口比较大,又出现报文段丢失的情况下,同一个序号的确认应答将会被重复不断地返回。而发送端主机如果连续3 次收到同一个确认应答,就会将其所对应的数据进行重发。

流控制

待填。。。。

拥塞控制

待填。。。

其他传输层协议

UDP-Lite

待填。。。

SCTP

待填。。。

DCCP

待填。。。

首部格式

UDP首部格式

待填。。。

TCP首部格式

待填。。。

TCP /IP 之TCP和UDP相关推荐

  1. TCP/IP和TCP,UDP

    1.TCP/IP协议: 1.1 TCP/IP协议是什么: 很多人认为tcp/ip就是tcp和ip组成的通信协议.其实tcp/ip协议不仅仅指代tcp/ip,它是指一个由FTP,SMTP,TCP,UDP ...

  2. TOE(TCP/IP Offload / TCP/IP卸载)技术及产品

    TOE(TCP/IP Offload / TCP/IP卸载)技术及产品 技术原理 TOE 全称 TCP Offload Engine,是目前主要的网络加速技术,它可以显著的提高网络的数据处理能 力,降 ...

  3. 深入理解TCP/IP协议-TCP建立与终止连接

    转载自  深入理解TCP/IP协议-TCP建立与终止连接 一.引言   TCP 是一个面向连接的协议.无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接.连接创建与终止的状态变化图如下: ...

  4. TCP/IP 和 TCP/IP的 三/四次握手

    什么是TCP/IP 首先来说,TCP/IP协议是浏览器与服务器链接因特网的协议.浏览器使用TCP/IP协议进入服务器,服务器使用TCP/IP协议来发送HTML文件到浏览器. TCP/IP的作用 TCP ...

  5. TCP/IP协议 TCP包深入理解

    详细解释TCP/IP标志位 TCP报格式 继续使用TCP/IP协议 TCP浅析中抓到的包进行分析. no Time Source Destination protocal Length info 3 ...

  6. 【TCP/IP详解】UDP报文格式

    我将工作中用到的报文格式进行了汇总,方便查阅: [TCP/IP协议]各层报文首部数据格式汇总 解析: 16位源端口号:这个字段通常包含发送数据报的应用程序所使用的 UDP 端口.接收端的应用程序利用这 ...

  7. TCP/IP:TCP/UDP报文格式

    目录 TCP报文格式 UDP报文格式 TCP报文格式 报文格式 图1 TCP首部格式 字段 长度 含义 Source Port 16比特 源端口,标识哪个应用程序发送. Destination Por ...

  8. OSI七层 TCP/IP四层 TCP/IP协议栈: 不同的通信协议的大集合

    应用层: 网络服务与最终用户的一个接口. 协议有:HTTP FTP TFTP SMTP SNMP DNS TELNET HTTPS POP3 DHCP 表示层: 数据的表示.安全.压缩.(在五层模型里 ...

  9. TCP/IP 笔记 - TCP连接管理

    TCP是一种面向连接的单播协议,在发送数据之前,通信双方必须在彼此建立一条连接:这与UDP的无连接不同,UDP无需通信双方发送数据之前建立连接.所有TCP需要处理多种TCP状态时需要面对的问题,比如连 ...

最新文章

  1. 开始使用asp.net ajax的控件工具包AJAX Control Toolkit
  2. 将时间格式的字符串转换成日期类型浏览器兼容解决方案
  3. 百度万亿流量的转发引擎BFE开源了!华为折叠屏曝光,采用传统翻盖式手机折叠方案;微软将关闭安卓iOS平台Cortana……...
  4. python多进程控制gui界面_Python优雅地终止了多进程和gui进程
  5. Jmeter发送get请求
  6. uniapp 根据经纬度逆转地理地质
  7. Git(11)-- Git 别名(alias)
  8. 分享一份非常强势的Android面试题
  9. 8.2捷联惯导算法仿真 代码整理分析(一)
  10. 全球及中国直流调速器行业市场调研及未来发展趋势预测报告2022-2027年
  11. 【规律】Cunning Friends
  12. 共享店铺系统如何设计?具体如何做?
  13. 网页简单整合Skype
  14. Pycharm新建文件模板配置
  15. 披荆斩棘,砥砺前行,我是新手奶爸,我仍笑如少年——小康师兄的2022年度总结
  16. 串口虚拟工具(VSPD)的使用方法
  17. uniapp简单的身份证照片(正反面)上传
  18. 【ChatGPT案例】10大ChatGPT谷歌插件神器
  19. 19年计算机英语统考,抓紧!2019年上半年全国计算机等级考试、全国英语等级考试报名即将截止...
  20. Grub2启动项的修改和相关操作命令

热门文章

  1. AI回合制游戏,过程比较简单。程序中的f变量和条件语句用的很经典。
  2. 利用Dynamo建立桥梁下部结构—桥墩系梁盖梁
  3. Jlink使用技巧系列教程索引
  4. 找工作笔试面试那些事儿(17)---linux测试题
  5. 你离顶尖游戏大厂只差这份招面试攻略啦
  6. cf微软AIM服务器,CF微软AIM1.1透视自瞄无后坐力
  7. 云监控无线煤气报警器如何解决联动问题?
  8. 【C语言】编程实现输出矩阵上/下三角的数值。要求:输入一个正整数n和n阶矩阵的数值,打印输出矩阵、下三角和上三角的数值。
  9. PCb过孔大小设置 / 丝印层字符尺寸设置
  10. 转 做个男人,做个成熟的男人,做个有城府的男人