【计算机网络】——传输层

//图片取自王道,仅做交流学习

 

一、传输层提供的服务

物理层、数据链路层、网络层是通信子网。

传输层:它属于面向通信部分的最高层,同时也是用户功能的最低层

为应用层提供通信服务使用网络层的服务

网络层提供主机之间的逻辑通信。

1、传输层的功能:


1.传输层提供进程和进程之间的逻辑通信(即端到端通信)。网络层提供的主机到主机之间的通信

2.复用和分用

复用:发送方不同的应用进程都可以使用同一个传输层协议传输数据;

分用:接收方的传输层在剥去报文的首部之后能正确的把这些数据交付到目的进程。


3.传输层对收到的报文进行差错检测


4.传输层的两种协议

面向连接的TCP 无连接的UDP

面向连接的传输控制协议TCP

尽管下面的网络是不可靠的(只提供最大努力的服务),但是这种逻辑信道就相当于一条全双工的可靠信道。

传送数据之前必须建立连接,数据传送结束后要释放连接。不提供广播或多播服务。由于TCP要提供可靠的面向连接的传输服务,因此不可避免增加了许多开销:确认、流量控制、计时器及连接管理等。可靠,面向连接,时延大,适用于大文件。



无连接的用户数据报协议UDP
传送数据之前不需要建立连接,收到UDP报文后也不需要给出任何确认。
不可靠,无连接,时延小,适用于小文件。

逻辑信道不可靠

2、传输层的寻址与端口

端口

能让应用层各种应用进程将其数据通过端口向下交付给传输层,以及让传输层知道应当将其报文中的数据向上通过端口交付给应用层的进程。

它 是传输层的SAP,它在传输层的作用类似于IP地址在网络层,MAC地址在数据链路层的作用。只不过IP地址和MAC地址标识主机,而端口标识的是主机中的应用进程。

端口是传输层的SAP(服务访问点 Service Access Point)

端口号只有本地意义,在因特网中不同计算机的相同端口是没有联系的。

端口号长度为16bit  (2个字节),能表示65536个不同的端口号。

登记端口,比如Tomcat 8080, Mysql:3306,  redis 6379,RabbitMQ 5672

在网络中采用发送方和接收方的套接字组合来识别端点,套接字唯一标识了网络中的一个主机和它上面的一个进程。

套接字socket= (主机IP地址,端口号)

3、无连接服务与面向连接服务

面向连接的服务就是在通信双方进行通信之前,必须先建立连接,整个连接的情况一直被实时监控和管理。通信结束之后,应该释放这个链接。

无服务链接是指两个实体之间的通信不需要先建立好连接,需要通信的时,直接将信号发送到"网络”中,让该信息的传递在网上尽力而为的往目的地传送。

TCP是面向连接的,向上提供了一条逻辑上全双工的可靠的信道,适合可靠性要求较高的场景,如FTP,HTTP,TELNET。TCP 提供确认、流量控制、计时器及连接管理等,开销较大

UDP是无连接的非可靠传输协议,简单,速度快,实时性好。适合小文件传输 TFTP,DNS,SNMP和实时传输协议RTP都是基于DNS。

二、UDP

1、UDP数据报

UDP只在IP数据报服务之上增加了很少功能:复用分用 差错检测功能

UDP的主要特点:

1.UDP是无连接的,减少开销和发送数据之前的时延。

2.UDP使用最大努力交付,即不保证可靠交付。

3.UDP是面向报文的,适合一次性传输少量数据的网络应用。

4、UDP无拥塞控制,适合很多实时应用。

5.UDP首部开销小,8B,TCP 20B。

6、UDP支持一对一,一对多,多对一,多对多的交互通信。

应用层给UDP多长的报文,UDP就照样发送,即一次发一个完整报文。

UDP报文格式

UDP报文=UDP首部 + 用户数据。

UDP首部4个字段,共8个字节,每个字节的长度都是2B。

1)源端口。源端口号。在需要对方回信时选用,不需要时可用全 0。
2) 目的端口。目的端口号。这在终点交付报文时必须使用到。

3)长度。UDP 数据报的长度(包括首部和数据),其最小值是 8(仅有首部)。

4)校验和。检测 UDP 数据报在传输中是否有错。有错就丢弃。该字段是可选的,当源主机
不想计算校验和时,则直接令该字段为全 0。

伪首部只有在计算检验和时才出现,不向下传送也不向上递交
17:封装UDP报文的IP数据报首部协议字段是17。
UDP长度:UDP首部8B   +   数据部分长度(不包括伪首部)。

当传输层从 IP 层收到 UDP 数据报时,就根据首部中的目的端口,把 UDP 数据报通过相应的端口上交给应用进程,如图。

如果接收方 UDP 发现收到的报文中的目的端口号不正确 (即不存在对应于端口号的应用进程),那么就丢弃该报文,并由 ICMP 发送“端口不可达”差错报文给发送方。

2、UDP校验

//待详细补充

二、TCP

UDP的报文长度由发送应用进程决定,而TCP的报文长度由接收方给出的窗口值和当前网络拥塞成都决定的。

1、协议特点

1.TCP是面向连接(虚连接) 的传输层协议。打call

2.每一条TCP连接只能有两个端点,每一条TCP连接只能是点对点的。

3.TCP提供可靠交付的服务,无差错、不丢失、不重复、按序到达。可靠有序,不丢不重

4.TCP提供全双工通信。

发送缓存 准备发送的数据&已发送但尚未收到确认的数据

接收缓存 按序到达但尚未被接受应用程序读取的数据&不按序到达的数据

5.TCP面向字节流  (流:流入到进程或从进程流出的字节序列。)

TCP把应用程序交下来的数据看成仅仅是一连串的无结构的字节流

2、TCP报文段

TCP的数据单元称为 报文段,TCP报文段既可以运载数据,也可以建立连接、释放连接、应答。(根据控制字内容来决定)

TCP报文 = 首部  + 数据部分

整个TCP报文段作为IP数据报的数据部分封装在IP数据报中。

其首部前20B是固定的,TCP首部 最短为20B,后面有4N个字节是根据需要增加的选项,长度为4B的整数倍。

即:

TCP头 =固定20B + N*4B选项。

UDP头 =8B

TCP首部格式

1)源端口和目的端口,各站2B。端口是传输层与应用层的服务接口,传输层的复用和分用都需要通过端口来实现。

2)序号: 占4B,范围  0 ~(2^32 )-1  在一个TCP连接中传送的字节流中的每一个字节都按顺序编号,本字段表示本报文段所发送数据第一个字节的序号。(TCP是面向字节流的)

3) 确认号: 4B  期望收到对方下一个报文段的第一个数据字节的序号。若确认号为N,则证明到序号N-1为止的所有数据都已正确收到。

4) 数据偏移(首部长度): TCP报文段的数据起始处距离TCP报文段的起始处有多远,以4B位单位,即1个数值是4B。 由于数据偏移 占4bit,而4个bit位所能表示的最大数字是15,所以首部长度最大为 15*4B =60B

5)保留  6位。

6)6个控制位


紧急位URG: URG=1时,标明此报文段中有紧急数据,是高优先级的数据,应尽快传送,不用在缓存里排队,配合紧急指针字段使用。


确认位ACK:ACK=1时确认号有效,在连接建立后所有传送的报文段都必须把ACK置为1


推送位PSH:PSH=1时,接收方尽快交付接收应用进程,不再等到缓存填满再向上交付。


复位RST:RST=1时,表明TCP连接中出现严重差错,必须释放连接,然后再重新建立传输链接。


同步位SYN:SYN=1时,表明是一个连接请求/连接接受报文。


终止位FIN: FIN=1时,表明此报文段发送方数据已发完,要求释放连接。

7)窗口:占2B 范围0~2^16 -1,它指出现在允许对方发送的数据量,接收方数据缓存空间是有限的,因此窗口值作为接收方让发送方设置其发送窗口的一句。(大哥你慢点)

8)校验和。占2B。校验和字段检验的范围包括首部和数据两部分。在计算校验和时和UDP一样,要在TCP报文段前面加上12B的伪首部(只需要将UDP伪首部协议字段的17 改为 6,UDP长度字段改为TCP长度字段,其他和UDP一样)

9) 选项: 长度可变 TCP最初只规定一种选项, 即最大报文段长度(MSS)。MSS 是TCP报文段中的数据字段的最大长度(注意是数据字段)。

10)填充:   为了使得整个首部长度是4B的倍数

3、TCP连接管理

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

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

相关文章

SpringMVC之JSR303与拦截器

目录 一.JSR303 1.什么是JSR303 2.为什么使用JSR303 3.JSR303常用注解 4.快速入门 4.1导入Maven依赖 4.2 配置校验规则 4.3 对服务端数据添加进行校验 4.4 结果测试 二.拦截器 1.什么是拦截器 2.拦截器与过滤器 3.应用场景 4.基本拦截器配置 5 案例演示&#xff0…

区块链实验室(23) - FISCO中PBFT耗时与流量特征

前面的实验(区块链实验室(11) - PBFT耗时与流量特征)用仿真的PBFT观察耗时。现在用真实的Fisco网络再次观察其特征。同样地,用相同的网络,即100个节点构成的无标度网络。在每个节点上发起10次交易,记录每次交易的耗时。结果见下图所示。 前半…

VSCode『SSH』连接服务器『GUI界面』传输

前言 最近需要使用实验室的服务器训练带有 GUI 画面的 AI 算法模型(pygame),但是我是使用 SSH 连接的,不能很好的显示模型训练的效果画面,所以下面将会讲解如何实现 SSH 连接传输 Linux GUI 画面的 注:我们…

Postman —— HTTP请求基础组成部分

一般来说,所有的HTTP Request都有最基础的4个部分组成:URL、 Method、 Headers和body。 (1)Method 要选择Request的Method是很简单的,Postman支持所有的请求方式。 (2)URL 要组装一条Request…

华为HCIA(五)

Vlan id 在802.1Q中 高级ACL不能匹配用户名和源MAC 2.4G频段被分为14个交叠的,错列的20MHz信道,信道编码从1到14,邻近的信道之间存在一定的重叠范围 STA通过Probe获取SSID信息 Snmp报文 网络管理设备异常发生时会发送trap报文 D类地址是…

基于Java网络书店商城设计实现(源码+lw+部署文档+讲解等)

博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…

亚马逊云科技 Amazon Lightsail :一种在云服务器上运行容器的简单方法

当向开发人员介绍亚马逊云科技云服务时,通常会花一点时间来介绍并演示 Amazon Lightsail 。它是迄今为止开始使用亚马逊云科技的最简单方法。使用它,您在几分钟内即可在自己的虚拟服务器上运行您的应用程序。而后增加了在 Amazon Lightsail 上部署基于容…

C语言字符函数和字符串函数(1)

大家好,我们又见面了,让大家久等了,我们今天就来学习字符函数和字符串函数。 在开启今天的学习之前呢,我来解决一下一些小伙伴平时找不到库函数使用的烦恼,因为我们cplusplus.com最新版本不能够查询函数,我…

排查disabled问题之谷歌新版本特性

问题复现 最近我突然接手一个后台的bug,这个后台很久没有迭代更新了,我也不熟悉业务,所以只能看一下源码,问题很快就复现,测试的修复操作也很正确,就是因为渲染的input标签中存在disableddisabled’属性导…

英国留学生务必谨慎使用ChatGPT!!!

ChatGPT(全名:Chat Generative Pre-trained Transformer),是OpenAI研发的聊天机器人程序,于2022年11月30日发布。ChatGPT是人工智能技术驱动的自然语言处理工具,它能够基于在预训练阶段所见的模式和统计规律…

1.IAR-8051安装

新版安装教程:IAR EW for 8051 简介与安装 新版软件zhuce:IAR EW for 8051 软件注册 - 知乎 这个新版的我也放到网盘里面了,自己自行选择安装 一、下载IAR-8051 链接:https://pan.baidu.com/s/1mYwSQvSjAiSzltrEbK3yAw?pwd43cd …

【产品经理】深入B端SaaS产品设计核心理念

这几年各企业的B端业务都在做SaaS平台,但对SaaS的了解还不是完全全面,对于一些产品的定位以及设计还在探索中 本文讨论“为什么采用SaaS模式”、“SaaS产品有哪些”以及“如何做好SaaS产品设计”三个话题,核心是产品设计,主要从需…

LabVIEW开发航天器模拟器的姿态控制和反作用轮动量管理

LabVIEW开发航天器模拟器的姿态控制和反作用轮动量管理 在过去十年中,航天器一直是现代技术进步的先决条件。迄今为止,为了更好地完成各种实际任务,已经在航天器姿态控制领域进行了大量研究。航天器一旦进入太空,就容易出现不确定…

CSS

CSS CSS是什么 层叠样式表 (Cascading Style Sheets).CSS 能够对网页中元素位置的排版进行像素级精确控制, 实现美化页面的效果. 能够做到页面的样式和结构分离.说白了就是让网页变得好看 什么是样式呢? 大小,位置,间距,颜色&a…

银行发展绿色金融,8条建议为您指路

在《财富潮涌:银行发展绿色经济创新路径》内容中,我们带大家了解了商业银行有关绿色财富、绿色服务及绿色运营的内容。今天,我们将阐述商业银行发展绿色金融的必要性以及在实践中商业银行应该如何发展色金融。 发展绿色金融的必要性与难点 1.…

华为杯数学建模比赛经验分享

再过一周左右,第二十届华为杯数学建模比赛就要开赛了,所以今天分享一下个人数学建模比赛的经验。 今天给大家分享一期关于华为杯数学建模比赛的经验分享,我将从以下三个方面展开说明: (1)如何准备数学建模比赛&#x…

Interceptor的使用场景:拦截请求中的租户信息,注入到租户上下文中

业务场景 在SaaS环境中,租户是最重要的隔离业务数据的属性了,在自己的项目体系环境中,租户id能保证有值。但有个特殊场景,某些特殊权限的账号需要修改指定租户的内容,也即前端会携带租户信息过来,并且内部涉…

共享单车场景下Cat.1网络表现如何?测试结果来了

为帮助行业客户提高Cat.1产品稳定性,近期,天翼物联组织终端客户郑州威科姆科技股份有限公司开展基于中国电信 Cat.1网络下的共享单车体验测试,内容涵盖单车实时位置监控、单车在线率、业务数据延迟、语音播报功能等。测试结果表明&#xff0c…

零基础学前端(四)1. 重点讲解 CSS:盒子模型、样式选择器

1. 该篇适用于从零基础学习前端的小白 2. 初学者不懂代码得含义也要坚持模仿逐行敲代码,以身体感悟带动头脑去理解新知识 3. 初学者切忌,不要眼花缭乱,不要四处找其它文档,要坚定一个教授者的方式,将其学通透&#xff…

uni-app:通过ECharts实现数据可视化-如何引入项目

效果 引入文件位置 代码 <template><view id"myChart"></view> </template> <script> import echarts from /static/js/echarts.js // 引入文件 export default {mounted() {// 初始化EChartsconst myChart echarts.init(document…