前言:这是我《图解TCP/IP》笔记系列最后一篇(咕咕咕了将近两个月hh),TCP UDP其实面试的时候经常问到!

目录

传输层的定义:

TCP与UDP对比

端口号

通信识别:

确定端口号的方法:

TCP首部和UDP首部

其他传输层协议:UDP-Lite、DCCP、SCTP

UDP-Lite

DCCP

SCTP

TCP可靠性传输机制

1. 三次握手&&四次挥手:可靠性的基础

2. 序列号、确认应答、超时重传

3. 窗口控制与高速重发机制/快速重传(重复确认应答)

4. 拥塞控制


传输层的定义:

OSI参考模型中的第四层。

传出层协议为网络端点主机上的进程之间提供了可靠、有效的报文传送服务,其功能紧密地依赖于网络层的虚拟电路或数据报服务。

传输层定义了主机应用程序之间端到端的连通性。

TCP与UDP对比

  1. TCP传输控制协议;UDP用户数据报协议。
  2. 连接:TCP面向连接,可靠的流协议;UDP是不具可靠性的数据报协议,细微的处理会交给上层的应用处理。
  3. 服务对象:TCP是点对待你的两点间服务,即一条TCP连接只能有两个端点;UDP支持一对一、一对多,多对一、多对多的交互通信。
  4. 拥塞控制、流量控制:TCP有拥塞控制和流量控制保证数据传输的安全性;UDP没有拥塞控制,网络拥塞不会影响源主机的发送效率。
  5. 报文长度:TCP是动态报文长度,TCP报文长度时根据接收方的窗口大小和当前网络拥塞情况来决定的;UDP面向报文,不合并、不拆分,保留上面传下来的报文边界。
  6. 首部开销:TCP首部开销大,20个字节;UDP首部开销小,8个字节。
  7. 适用场景:通信数据的完整性让位于通信实时性,选择TCP(如文件传输、重要状态更新);反之用UDP(如视频传输、实时通信等)

端口号

在传输层中类似地址的概念,用来识别用一台计算机中进行通信的不同应用程序,也被称为程序地址。

类比数据链路层中的MAC地址,IP中的IP地址。

通信识别:

源IP地址+目标IP地址+协议号+源端口号+目标端口号

确定端口号的方法:

方法一:标准既定的端口号

也称为静态方法,指每个应用程序都有其指定的端口号。

例如HTTP、FTP、TELNET等应用层程序对应的使用的端口号就是固定的,如下表:

方法二:时序分配法
也称为动态分配法,服务器要求必须要有监听端口号,但是接受服务的客户端没必要确定端口号。此时客户端应用程序完全不用自己设置端口号而全权交给操作系统进行分配。

动态分配的端口号取值范围在49152~65535之间。

TCP首部和UDP首部

TCP首部的格式

  • 源端口号:表示发送端端口号,字段长16位。
  • 目标端口号:表示接收端端口号,字段长16位。
  • 序列号:字段长32位,序列号指的是发送数据的位置,每发送一次数据,就累加一次该数据字节数的大小。
  • 确认应答号:字段长32位,指的是下一次应该收到的数据的序列号。
  • 数据偏移:字段长4位,单位为4字节,即一共32位。表示TCP所传输的数据部分应该从TCP包的哪个位开始计算,也可以看做是TCP首部的长度,标识该TCP头部有多少个32bit字(4字节)。
  • 窗口大小:字段长16位,TCP流量控制的一个手段,窗口告诉对方本段的TCP接收缓冲区还能容纳多少字节的数据,这样对方就能控制发送数据的速度(详细可见TCP拥塞窗口)。
  • 保留:字段长4位,为了以后扩展时使用,一般设置为0。
  • 紧急指针:字段长16位,是一个正偏移量,它和序号字段的值相加表示最后一个紧急数据的下一字节的序号,用于发送端向接收端发送紧急数据的方法。
  • 控制位:字段长为8位,从左到右分别为CWR、ECE、URG、ACK、PSH、RST、SYN、FIN

UDP首部的格式

  • 源端口号:字段长16位,表示发送端端口号,该字段是可选项,优势可能不会设置源端口号。没有源端口号时设置为0,可用于不需要返回的通信中。
  • 目标端口号:字段长16位,表示接受端端口号。
  • 包长度:字段长为8字节,保存了UDP首部的长度根数据的长度之和。
  • 校验和:为了提供可靠的UDP首部和数据而设计,在计算校验和是,附加在UDP伪首部与UDP数据报之前,通过在最后一位增加一个“0”将全长增加16倍。

其他传输层协议:UDP-Lite、DCCP、SCTP

UDP-Lite

  • 轻量级用户数据包协议,扩充UDP机能的一种传输层协议。
  • 提供与UDP几乎完全一样的功能,不过计算校验和的范围可以由应用自行决定!

DCCP

  • 数据包拥塞控制协议
  • 辅助UDP的崭新的传输层协议,面向连接,可靠的。
  • 能够根据网络拥堵情况进行拥塞控制,接收端收到包以后返回确认应答,该确认应答将被用于重发与否的判断。

SCTP

  • Stream Control Transmission Protocol 流控制传输协议
  • 提供数据到达与否相关可靠性检查的传输层协议
  • 以消息为单位首发
  • 支持多重宿组
  • 支持多数据流通信
  • 可以定义消息的生存期限

TCP可靠性传输机制

1. 三次握手&&四次挥手:可靠性的基础

虽然TCP有窗口控制、重发控制等等这些可靠性方法,千万不要忘记了三次握手、四次挥手是TCP可靠性的基础!

2. 序列号、确认应答、超时重传

数据到达接收方,接收方需要发出一个确认应答,表示已经收到该数据段,并且确认序号会说明了它下一次需要接受的数据序列号。

如果发送发迟迟未收到确认应答,那么可能是发送的数据丢失,也可能是确认应答丢失,这是发送方在等待一定时间后进行重传,这个时间一般是2*RTT(报文段往返时间)+一个差值。

3. 窗口控制与高速重发机制/快速重传(重复确认应答)

在一个窗口大小内,不用一定等到应答才能发送下一段数据,窗口大小就是无需等待确认而可以继续发送数据的最大值。如果不使用窗口控制,每一个没收到确认应答的数据都要重发。

4. 拥塞控制

  • 慢启动:定义拥塞窗口,一开始将该窗口设为1,之后每次收到确认应答(经过一个RTT),将拥塞窗口大小*2。
  • 拥塞避免:设置慢启动闸值,一般开始为65536,。拥塞避免是指当拥塞窗口大小达到这个闸值,拥塞窗口的值不再指数上升,而是加法增加(每次加一)来避免拥塞。
  • 快速重传:在遇到三次重复确认应答(高速重发机制),代表收到了3个报文段,但是之前的一个端丢失了,就立即对其进行重传,然后先将闸值设为当前窗口大小的一半,然后将拥塞窗口大小设为慢启动闸值+3。

详细的可靠性传输问题可参见:https://blog.csdn.net/qq_41895747/article/details/104279887

《图解TCP/IP》笔记(十四)传输层两大协议TCP和UDP相关推荐

  1. 传输层两大协议:TCP与UDP详解(两者的联系与区别)

    一.TCP协议 1.TCP协议报文格式 TCP协议报文格式详解 2.TCP"三次握手"建立连接 位码即tcp标志位,有6种标示: SYN(synchronous建立联机) ACK( ...

  2. TCP/IP(五)传输层之细说TCP的三次握手和四次挥手

    前言 这一篇我将介绍的是大家面试经常被会问到的,三次握手四次挥手的过程.以前我听到这个是什么意思呀?听的我一脸蒙逼,但是学习之后就原来就那么回事! 一.运输层概述 1.1.运输层简介 这一层的功能也挺 ...

  3. 传输层的重要协议——TCP

    传输层上的两个重要协议 UDP:用户报文协议 TCP:传输控制协议 相同点:都是传输层协议,都需要实现进程to进程的通信 差异点:UDP没有做任何处理,保持网络原生态(不可靠) ​ TCP做了一定的传 ...

  4. 《联邦学习实战》杨强 读书笔记十四——构建公平的大数据交易市场

    当数据具有资产属性之后,数据便可以直接或者间接地为公司.为社会创造价值和收益,并且可以作为一种特殊的商品在市场中进行交易. 与传统的商品交易相比,数据资产交易的市场前景更广阔,但同时也面临着很多的挑战 ...

  5. 简述TCP/IP四层体系结构及每层作用

    应该说是Internet四层体系结构 1.数据链路层 2.网络层 3.传输层 4.应用层 ,其中IP是在第二层网络层中,TCP是在第3层传输层中,Internet体系结构最重要的是TCP/IP协议,是 ...

  6. 图解HTTP读书笔记(十)

    图解HTTP读书笔记(十) Web的攻击技术 HTTP协议本身并不存在安全性问题,因此协议本身几乎不会成为攻击对象.应用HTTP协议的服务器和客户端,以及运行在服务器上的Web应用资源才是攻击目标. ...

  7. (*长期更新)软考网络工程师学习笔记——Section 8 传输层

    目录 一.传输层的基本协议 二.面向连接服务和无连接服务 三.TCP (一)TCP的基本概念 (二)TCP的三种机制 (三)TCP的报文首部格式 (四)TCP三次握手 (五)TCP释放连接 四.UDP ...

  8. 【网络】之TCP/IP 网络模型有哪几层

    TCP/IP 网络模型有哪几层 对于同一台设备上的进程间通信,有很多种方式,比如有管道.消息队列.共享内存.信号等方式,而对于不同设备上的进程间通信,就需要网络通信,而设备是多样性的,所以要兼容多种多 ...

  9. TCP/IP协议和OSI七层模型

    一.TCP/IP协议 标准TCP/IP协议是用于计算机通信的一组协议,通常被称为TCP/IP协议栈,以它为基础组建的互联网是目前国际上规模最大的计算机网络. 正因为互联网的广泛应用,使得TCP/IP成 ...

最新文章

  1. js实现图片无缝连接
  2. 科大星云诗社动态20211202
  3. 【Python入门】Python字符串的45个方法详解
  4. c语言指针大全,C语言指针
  5. JAVA代码覆盖率工具JaCoCo-原理简单分析
  6. 技术人员转行产品经理读这些书就够了
  7. 软件测试用例模板和例子_如何编写测试用例?
  8. SEO理论实践的10大误区
  9. 基于python的第三方库Pyautogui实现程序自动控制鼠标与键盘
  10. 机房火灾自动报警系统常见问题及解决方案
  11. 北京最最最牛的IT公司都在这了 。。。
  12. 最全互联网Linux工作规划!
  13. ecshop模板文件说明
  14. png图片格式转换器_如何将图像转换为PNG格式
  15. 微信公众号语音内容提取下载
  16. 小程序推送代码到远程库
  17. OpenCV开发笔记(五十九):红胖子8分钟带你深入了解分水岭算法(图文并茂+浅显易懂+程序源码)
  18. pscs6免激活版,
  19. php artisan passport,Laravel Passport
  20. dumpsys alarm 格式解读

热门文章

  1. ubuntu 配置桥接网卡_ubuntu下使用qemu安装虚拟机并配置桥接网络
  2. 编译,移植DDWRT到到belkin8230
  3. pyqt5-tools安装失败处理方法
  4. TS科普5 PES包解析
  5. 爱奇艺Java实习一面凉经
  6. Dota2技能系统设计分析
  7. Java调用百度人脸对比接口进行人脸(图片)对比
  8. 实现圆盘旋转和暂停动画效果
  9. 重力传感器坐标位置调试
  10. 为什么需要 Cache Line Size 对齐?