计算机网络学习笔记(五):运输层(待更新)

目录

5.1 概述

5.1.1 TCP协议的应用场景

5.1.2 UDP协议的应用场景

5.2 三大关系

5.2.1 传输层协议和应用层协议之间的关系

5.3 用户数据报协议UDP(User Datagram Protocol)

5.3.1 UDP的特点

5.3.2 UDP的首部 

5.4 传输控制协议TCP(Transmission Control Protocol)

5.4.1 TCP的特点

5.4.2 TCP的首部(类比IP的首部)


5.1 概述

5.1.1 TCP协议的应用场景

        TCP为应用层协议提供可靠传输,发送端按顺序发送,接收端按顺序接收,其间发送丢包、乱序,TCP负责重传和排序。下面是TCP的应用场景。

  • 多次交互:客户端程序和服务端程序需要多次交互才能实现应用程序的功能
    • 接收电子邮件的POP3
    • 发送电子邮件的SMTP
    • 传输文件的FTP
  • 数据需要分段传输:应用程序传输的文件需要分段传输
    • 浏览器访问网页:网页中图片和HTML文件需要分段后发送给浏览器
    • QQ传文件

5.1.2 UDP协议的应用场景

  • 数据无需分段传输:客户端程序和服务端程序通信,应用程序发送的数据包不需要分段。
    • DNS域名解析:客户端向DNS服务器发送一个报文解析某个网站的域名,DNS服务器将解析的结果使用一个报文返回给客户端。
  • 实时通信:发送端和接收端需要实时交互,不允许较长延迟(通信时无需建立连接)
    • 语音/视频聊天:即便有几句话因为网络堵塞没听清,也不允许使用TCP等待丢失的报文,等待的时间太长了,就不能愉快的聊天了。
  • 多播或广播通信
    • 学校多媒体机房:老师的电脑屏幕需要教室的学生电脑接收屏幕,在老师的电脑安装多媒体教室服务端软件,在学生的电脑安装多媒体教室客户端软件。老师电脑使用多播地址或广播地址发送报文,学生电脑都能收到。
  • 注:同一个应用程序,可能会使用不同的协议。
    • QQ文字聊天、语音聊天、视频聊天:UDP协议
    • QQ传文件:TCP协议

5.2 三大关系

5.2.1 传输层协议和应用层协议之间的关系

        通常,传输层协议加一个端口号来标识一个应用层协议

  • 常见的应用层协议和传输层协议
    • HTTP默认使用TCP的80端口
    • HTTPS默认使用TCP的443端口(访问安全网站)
    • FTP默认使用TCP的21端口
    • SMTP默认使用TCP的25端口
    • POP3默认使用TCP的110端口
    • Telnet使用TCP的23端口
    • RDP默认使用TCP的3389端口(远程桌面协议)
    • Windows访问共享资源使用TCP的445端口
    • 微软SQL数据库默认使用TCP的1433端口
    • MySQL数据库默认使用TCP的3306端口
    • DNS使用UDP or TCP 的53端口

端口

  • 取值范围:端口用一个16端口号进行标志,允许有65536不同的端口号。
  • 分类:2大类、3小类
    • 服务器端使用的端口号
      • 熟知端口号:0 ~ 1023
      • 登记端口号:1024 ~ 49151,为没有熟知端口号的应用程序使用的。使用这个范围的端口号必须在IANA登记,以防止重复。
    • 客户端使用的端口号
      • 短暂端口号:49152 ~ 65535,留给客户进程选择暂时使用。
      • 当服务器进程收到客户进程的报文时,就知道了客户进程所使用的动态端口号。通信结束后,这个端口号可供其他客户进程以后使用。
  • 作用:端口号只具有本地意义,只是为了标志本计算机应用层中的各进程。在互联网中,不同计算机的相同端口号是没有联系的;同一计算机的不同进程使用不同的端口号(唯一)。
    • 服务器上端口的作用:定位服务器上的服务
      • 服务器给网络中的计算机提供服务,服务器一旦运行某个服务,该服务就会使用TCP/UDP协议的相应端口来侦听客户端的请求、等待客户端的访问,每个服务使用的端口必须唯一。
      • 当不同客户端访问同一服务器上的不同应用时,数据报最终都会到达同一服务器。此时,需要使用服务器上的端口号来定位服务,以便将不同的请求转到相应的服务进行处理。
    • 客户端上端口的作用:确定数据包返回后给哪个客户端实例

  • 注(重要!!!):同一台计算机既可以作为服务端,也可以作为客户端(即服务端和客户端是相对的)。
  • 小结:两个计算机中的进程要互相通信,不仅必须知道对方的端口号为了找到对方计算机中的应用进程) ,而且还要知道对方的 IP 地址为了找到对方的计算机)。

5.3 用户数据报协议UDP(User Datagram Protocol)

5.3.1 UDP的特点

        UDP只在IP的数据报服务之上增加了很少一点的功能:

  • 功能1(复用和分用):使用端口标识不同的应用层协议
    • 注:如果不是为了复用和分用,应用程序完全可以将需要传输的报文交给网络层,而不需要经过传输层UDP。
  • 功能2(差错检测)

  • 面向无连接:发送数据之前不需要建立连接
    • 减少了开销:主机不需要维持复杂的连接状态表(含有许多参数)
      • TCP:主机需要记录所有的TCP连接,可使用命令“netstat”查看(当大量用户同时访问web服务器时,web服务器需要记录所有的会话状态,消耗服务器的资源)
      • UDP:
    • 减少了时延
  • 面向报文:对于应用层交下来的报文,UDP既不合并,也不拆分,而是保留这些报文的边界。UDP一次交付一个完整的报文。

  • 尽最大努力交付/不提供可靠交付
    • 注:UDP本身是不保证可靠的,当发送的数据出现差错时,由发送端重新发送。
  • 不局限于一对一:UDP支持一对一、一对多、多对一和多对多的交互通信(即支持多播、广播
  • 无拥塞控制:网络出现的拥塞不会使源主机的发送速率降低(减少了时延)
    • 实时应用:要求源主机以恒定的速率发送数据,并且允许在网络发生拥塞时丢失一些数据,但却不允许数据有太大的时延
    • 多媒体通信
  • 首部开销小
    • UDP:8个字节
    • TCP :20个字节

5.3.2 UDP的首部 

  • 源端口(选用):根据是否需要对方回信来确定是否使用
    • 需要对方回信:填入源端口号(系统随机产生)
    • 不需要对方回信:全0
  • 目的端口(必用):在终点交付报文时,必须使用(用于确定将该报文交付给上层的哪个具体应用程序)
  • 长度:UDP用户数据报的长度(首部+数据部分)
    • 最小值:8(仅有首部)
  • 检验和:检测UDP用户数据报在传输中是否有错(有错就丢弃)
    • 注:为了计算校验和,此处引入“伪首部”共同参与计算

5.4 传输控制协议TCP(Transmission Control Protocol)

5.4.1 TCP的特点

  • 面向连接:发送数据之前需要建立连接(三次握手),用于协商参数(窗口大小、最大报文段长度MSS、是否支持选择性确认等)
  • 面向字节流:虽然应用程序和TCP的交互是一次一个数据块,但TCP把应用程序交下来的数据看成仅仅是一连串无结构的字节流。TCP中的“流”(steam)指的是流入到进程或从进程流出的字节序列。
    • 数据块不同:TCP不保证接收方应用程序收到的数据块发送方应用程序发出的数据块具有对应大小的关系
    • 字节流相同:TCP保证接收方应用程序收到的字节流必须和发送方应用程序发出的字节流完全一样
  • 提供可靠交付:通过TCP连接传送的数据,无差错、不丢失、不重复且按序发送和接收。(为了在无连接的、不可靠的IP网络服务基础之上提供可靠交付的服务,TCP在IP的数据报服务基础之上,增加了保证可靠性的一系列措施。)

  • 局限于一对一:每一条TCP连接只能有两个端点(end point),只能是点对点的(一对一)(即不支持多播、广播
  • 全双工通信:一旦通信双方建立连接,就能基于此连接进行双向通信。

TCP中“面向流”的概念

TCP中“连接”的概念

  • TCP连接的端点套接字(socket)/插口
    • 套接字由IP地址和端口号构成,表示TCP连接的一端。
    • 注1:TCP 连接的端点不是主机,不是主机的IP 地址,不是应用进程,也不是运输层的协议端口。
    • 注2:socket有多种不同的意思
      • 应用编程接口API称为socket API,简称为socket
      • socket API中使用的一个函数名也叫作socket
      • 调用socket函数的端点称为socket
      • 调用socket函数时其返回值称为socket描述符,简称为socket
      • 在操作系统内核中连网协议的Berkeley实现,称为socket实现

  • TCP连接:每一条TCP连接唯一地被通信两端的两个端点(即两个套接字)所确定。(每一条TCP连接有两个端点)
    • TCP 连接就是由协议软件所提供的一种抽象。
    • TCP 把连接作为最基本的抽象。
    • 同一个IP地址可以出现在多个不同的TCP连接中。
    • 同一个端口号可以出现在多个不同的TCP连接中
    • 示例:现有两个浏览器同时访问web服务器,建立的连接如下所示
      • 连接1:{(202.108.22.5:80), (192.168.0.2:55262)}
      • 连接2:{(202.108.22.5:80), (192.168.0.3:59379)}
      • 可见,同一个IP地址202.108.22.5出现在两条不同的连接中;同一个端口号80也出现在两条不同的连接中。

5.4.2 TCP的首部(类比IP的首部)

  • 源端口(2字节)、目的端口(2字节):标识不同的应用层协议
  • 序号(4字节):本报文段所发送数据的第一个字节在整个数据(文件)中的第几个字节
    • 取值:[0, 2^{31}-1],共2^{32}个序号
    • 最大值2^{32}= 4294967296 byte = 4194304 KB = 4096 MB = 4 GB(当传输的文件大于4GB时,序号需要从0又开始编号)
  • 确认号(4字节):接收端期望收到发送端下一个报文段的第一个数据字节的序号
    • 一旦建立TCP连接,通信双方可以互相发送数据。当A给B发送数据后,B可以给A回复确认,也可以回复确认和发送数据。
    • BA回复确认(不发送数据):数据报中仅有TCP首部(不得不为了确认而单独产生确认数据报
    • BA回复确认和发送数据:数据报中有TCP首部和需要发送的数据(发送数据时,顺便携带确认号,无需单独产生确认数据报

  • 数据偏移/首部长度(4)TCP报文段的数据起始处距离TCP报文段的起始处有多远
    • 最大值 → 1111 = 15个单位(一个单位为4字节) = 60字节
    • 数据偏移的最大值为60字节,换言之可变部分的最大长度为40字节(固定部分的长度为20字节)
    • 由于首部包含可变部分,其长度并不是固定的,因此必须声明首部长度,以便接收方区分首部和数据
  • 标志位(12)
    • 保留(6):保留为今后使用(目前置为0)
    • 紧急URG(urgent):当URG=l时,“紧急指针”字段有效
      • 报文段有紧急数据,应尽快传送,而不要按照原来的排队顺序来传送。
    • 确认ACK(acknowlegment):当ACK=1时,“确认号”字段才有效
      • TCP规定,在建立连接后,所有传送的报文段都必须把ACK设置1。
    • 推送PSH(push):当两个应用进程进行交互式的通信时,有时一端的应用进程希望在键入一个命令后立即就能收到对方的响应。在这种情况下,TCP就可以使用推送操作。
      • 案例分析:当FTP客户端给FTP服务器上传文件时,在传输过程中,客户端突然中断上传,此时将该命令封装到数据段中(推送标志位置为1)。服务器收到该数据段后,发现推送标志位为1,会立刻处理该数据段,而不必排队等待。
    • 复位RST(reset):当RST=l时,表明TCP连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立传输连接
    • 同步SYN(synchronization):在连接建立时用来同步序号。
    • 终止FIN(finish):当FIN=1时,表明此报文段的发送方的数据己发送完毕,并要求释放传输连接
    • 注:紧急URG和推送PSH通常一起使用;确认ACK、同步SYN和终止FIN通常一起使用。
  • 窗口(16):接收方告诉发送方,从本报文段首部中的确认号算起,接收方目前允许对方发送的数据量
    • 取值:[0, 216-1]之间的整数(单位是字节)
    • TCP协议的流量控制功能是通过调整窗口的大小来实现的:
      • 当网络拥塞或接收端处理速度较慢时,接收端可将窗口值调小
      • 当网络顺畅或接收端处理速度较快时,接收端可将窗口值调大
  • 检验和(16):检验的范围包括首部和数据
  • 紧急指针(16):本报文段中的紧急数据的字节数(紧急数据结束后就是普通数据
  • 选项(长度可变)
    • 最大值:40字节
    • 常见选项
      • 最大报文段长度(Maximum Segment Size, MSS):TCP最初只规定了一种选项
      • 选择确认(Selective Acknowledgement, SACK)
    • :选项长度需要为4字节的整数倍,否则需要填充

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/137602.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

obs whip 100ms端到端时延 webrtc验证

obs----whip---->媒体服务-----whep-----→chrome播放器(webrtc demo) 所有软件在同一台机器 1)h264251080p 平均时延:162.8ms 采样点ms:167151168169151168166168167153 2)h264301080p 平均时延&…

Matplotlib数据可视化综合应用Matplotlib图形配置在线闯关_头歌实践教学平台

Matplotlib数据可视化综合应用图形配置 第1关 配置颜色条第2关 设置注释第3关 自定义坐标刻度第4关 配置文件与样式表 第1关 配置颜色条 任务描述 本关任务:使用colorbar绘制一个热成像图。 编程要求 在右侧编辑器Begin-End处补充代码,根据输入数据绘制…

P1529 [USACO2.4] 回家 Bessie Come Home 题解

文章目录 题目描述输入格式输出格式样例样例输入样例输出 提示完整代码 题目描述 现在是晚餐时间,而母牛们在外面分散的牧场中。 Farmer John 按响了电铃,所以她们开始向谷仓走去。 你的工作是要指出哪只母牛会最先到达谷仓(在给出的测试数…

【数据结构】单链表之--无头单向非循环链表

前言:前面我们学习了动态顺序表并且模拟了它的实现,今天我们来进一步学习,来学习单链表!一起加油各位,后面的路只会越来越难走需要我们一步一个脚印! 💖 博主CSDN主页:卫卫卫的个人主页 &#x…

ubuntu 16.04.5 安装 vivado 2019.1 完整编译AD9361的环境

一、前期安装 1、安装ncurses库(已经包含了,其他的os需要安装) sudo apt install libncurses5二、安装 sudo ./xsetup使用lic进行激活。 三、安装后 输入指令 sudo gedit ~/.bashrc 末尾添加 source /opt/Xilinx/Vivado/2019.1/setti…

无人机航拍技术基础入门,无人机拍摄的方法与技巧

一、教程描述 买了无人机,可是我不敢飞怎么办?禁飞区越来越多,到底哪儿才能飞?我的无人机跟你一样,为什么我拍不出大片?厂家的说明书看不进去,有没有一套无人机的课程,可以快速上手…

ruoyi前后端分离版本开发框架解读---让你快速入门

后端结构 com.ruoyi ├── common // 工具类 │ └── annotation // 自定义注解 │ └── config // 全局配置 │ └── constant // 通用常量 │ └── core …

sqli-labs-1

文章目录 Less-01Less-02Less-03Less-04 Less-01 1.输入不同的id值,可以获取不同的用户信息: 2.在sql后拼接’or11–,并没有获取到所有用户的信息,猜测可能用了limit语句 3.构造错误的sql语句,果然有limit报错: …

《网络协议》03. 传输层(TCP UDP)

title: 《网络协议》03. 传输层(TCP & UDP) date: 2022-09-04 22:37:11 updated: 2023-11-08 15:58:52 categories: 学习记录:网络协议 excerpt: 传输层、UDP、TCP(可靠传输,流量控制,拥塞控制&#xf…

汽车标定技术(八)--MPC57xx是如何支持标定的页切换

目录 1.页切换的概念 1.1 标定常量的理解 1.2 页切换 2.MPC57xx的Overlay模块 3.小结 1.页切换的概念 在汽车标定测量中,有一个概念我想很多人都听过,但是实际上在项目里没有用到过,那就是今天要讲的页切换概念。在讲页切换的时候&#…

手机怎么打包?三个方法随心选!

有的时候,电脑不在身边,只有随身携带的手机,这个时候又急需把文件打包发送给同事或者同学,如何利用手机操作呢?下面介绍了具体的操作步骤。 一、通过手机文件管理自带压缩功能打包 1、如果是iOS系统,就在手…

【PHP函数封装】分分钟帮你实现数据脱敏处理, 支持手机号码、邮箱、身份证号 中文字符串!

🚀 个人主页 极客小俊 ✍🏻 作者简介:web开发者、设计师、技术分享博主 🐋 希望大家多多支持一下, 我们一起进步!😄 🏅 如果文章对你有帮助的话,欢迎评论 💬点赞&#x1…

MIPSsim模拟器 使用说明

(一) 启动模拟器 双击MIPSsim.exe,即可启动该模拟器。模拟器启动时,自动将自己初始化为默认状态。所设置的默认值为: u所有通用寄存器和浮点寄存器为全0; u内存清零; u流水寄存器为全0&#xff…

【ElasticSearch系列-06】Es集群架构的搭建以及集群的核心概念

ElasticSearch系列整体栏目 内容链接地址【一】ElasticSearch下载和安装https://zhenghuisheng.blog.csdn.net/article/details/129260827【二】ElasticSearch概念和基本操作https://blog.csdn.net/zhenghuishengq/article/details/134121631【三】ElasticSearch的高级查询Quer…

P1547 [USACO05MAR] Out of Hay S 题解

文章目录 题目描述输入格式输出格式样例样例输入样例输出 完整代码 题目描述 Bessie 计划调查 N N N( 2 ≤ N ≤ 2 000 2 \leq N \leq 2\,000 2≤N≤2000)个农场的干草情况,它从 1 1 1 号农场出发。农场之间总共有 M M M( 1 ≤…

深入理解ClickHouse跳数索引

一、跳数索引​ 影响ClickHouse查询性能的因素很多。在大多数场景中,关键因素是ClickHouse在计算查询WHERE子句条件时是否可以使用主键。因此,选择适用于最常见查询模式的主键对于表的设计至关重要。 然而,无论如何仔细地调优主键&#xff…

14:00面试,14:06就出来了,问的问题有点变态。。。。。。

从小厂出来,没想到在另一家公司又寄了。 到这家公司开始上班,加班是每天必不可少的,看在钱给的比较多的份上,就不太计较了。没想到5月一纸通知,所有人不准加班,加班费不仅没有了,薪资还要降40%…

跨境电商:自养买家账号测评,你需要了解的细节

在跨境电商的浪潮中,自养买家账号测评已经成为了一种趋势。近期,不少跨境卖家咨询自养买家账号测评的相关问题,看来有必要再讲解一下卖家测评的一些细节。今天将着重介绍自养号测评的相关内容。 首先,什么叫做自养号测评呢&#x…

pytest + yaml 框架 -58.运行报告总结summary.json

前言 用例运行结束后,在本地生成summary.json 文件,总结运行结果。 v1.5.1版本更新内容: 1.解决参数化,中文在控制台输出问题 2.保存用例结果summary.json 保存用例结果summary.json 命令行执行用例 pytest运行结束&#xff0…

【Unity插件】分享几个完全免费的2D角色动画生成器(推荐收藏)

文章目录 前言一、lpc-character-generator二、Universal-LPC-Spritesheet-Character-Generator三、UP主开发的2D人物换装系统四、Character Editor: Megapack完结 前言 你可能游戏开发能力很强,但是正愁于2D角色动画,那么这篇文章就是为你而准备的&…