计算机网络————运输层

news2024/12/28 18:18:58

文章目录

  • 概述
  • UDP
  • TCP
    • 首部格式
  • 连接管理
    • 连接建立
    • 连接释放

概述

从IP层看,通信双方是两个主机。

但真正进行通信的实体是在主机中的进程,是这个主机中的一个进程和另一个主机中的一个进程在交换数据。

所以严格的讲,两个主机进行通信就是两个主机中的应用进程互相通信。

IP协议能把分组送到主机,但分组还停留在主机的网络层而没有交付给主机中的应用进程。


从运输层看,通信的真正端点并不是主机而是主机中的进程。即,端到端的通信是应用进程之间的通信。在一个主机中经常有多个应用进程同时分别和另一个主机中的多个应用进程通信。

运输层的重要功能:

  • 复用:在发送方不同的应用进程都有可以使用同一个运输层协议传送数据
  • 分用:接收方的运输层在剥去报文的首部后能够把这些数据正确交付到目的应用进程

协议

两个主要协议:

  • 用户数据报协议UDP(User Datagram Protocol) | RFC 768 | UDP用户数据报
  • 传输控制协议TCP(Transmission Control Protocol) | RFC 793 | TCP报文段

UDP在传送数据之前不需要先建立连接,远程主机的运输层收到UDP报文后,不需要给出任何确认。

TCP提供面向连接的服务。在传送数据之前必须先建立连接,数据传送结束后要释放连接。TCP不提供广播或多播服务。

一些应用和应用层协议主要使用的运输层协议:
在这里插入图片描述


运输层的端口

因特网上使用的计算机的操作系统种类很多,不同的操作系统又使用不同格式的进程标识符。为了使运行不同操作系统的计算机的应用进程能够互相通信,必须使用统一的方法对TCP/IP体系的应用进程进行标志,这种方法必须与特定操作系统无关。

但把一个特定机器上运行的特定进程指明为因特网上通信最后的终点还是不可行的。这是因为进程的创建和撤销都是动态的,通信的一方几乎无法识别对方机器上的进程。
另外,往往需要利用目的主机提供的功能来识别终点,而不需要知道具体实现这个功能的进程是哪一个。

解决方法是在运输层使用协议端口号,简称为端口(port)。也就是说,虽然通信的终点是应用进程,但只要把传送的报文交到目的主机的某一个合适的目的端口,剩下的工作就由TCP来完成。

TCP/IP的运输层用一个16位端口号来标志一个端口。端口号只具有本地意义,只是为了标志本计算机应用层中的各个进程在运输层交互时的层间接口。在因特网的不同计算机中,相同的端口号是没有关联的。16位的端口号可允许有65535个不同的端口号。


两个计算机中的进程互相通信,不仅需要对方的IP地址,还需要知道对方的端口号。

因特网上的计算机通信是采用客户-服务器方式,客户在发起通信请求时,必须知道对方服务器的IP地址和端口号。运输层的端口号分为两大类:
1、服务器端使用的端口号:又分为两类

  • 熟知端口号或系统端口号,数值0~1023,可在www.iana.org查到,指派给TCP/IP最重要的应用程序,让所有的用户都知道。
    在这里插入图片描述
  • 登记端口号,数值1024~49151。 是为没有熟知端口号的应用程序使用的。这类必须在IANA登记,以防止重复。

2、客户端使用的端口号,数值1024~65535。这类端口号仅在客户进程运行时动态选择,又叫短暂端口号。通信结束就不存在了。

UDP

在IP之上增加很少的功能:

  • 复用
  • 分用
  • 差错检测

主要特点:

  • 无连接,减少了开销和发送数据之前的时延
  • 尽最大努力交付,即不保证可靠交付
  • 面向报文,发送发的UDP对应用程序交下来的报文,添加首部后就向下交付给IP层。既不合并,也不拆分,保留这些报文的边界。
    在这里插入图片描述
  • 无拥塞控制
  • 支持一对一、一对多、多对一、多对多交互通信
  • 首部开销小,只有8字节,TCP有20字节

首部格式

数据字段和首部字段

首部字段由四个字段组成,每个字段的长度都是两个字节:
1、源端口 : 在需要回信时选用,不需要可全用0
2、目的端口 : 终点交付报文
3、长度 : UDP用户数据报的长度,最小值是8
4、检验和 : 检测UDP用户数据报在传输时是否有错,有错就丢弃
在这里插入图片描述

如果接收方UDP发现收到的报文中的目的端口号不正确,就丢弃该报文,并由ICMP发送“端口不可达”差错报文给发送方

UDP的检验和是把首部和数据部分一起都检验,IP数据报的检验和只检验IP数据报的首部

TCP

主要特点:
1、面向连接
2、每一条TCP连接只能有两个端点,每一条TCP连接只能是点对点的
3、提供可靠交付。无差错、不丢失、不重复、按序到达

  • 停止等待协议

    • 无差错情况,发送-确认-发送-确认······
      在这里插入图片描述

    • 出现差错

      • 在这里插入图片描述

      • A超过一段时间仍没有收到确认,就认为刚才发送的分组丢失了,重传前面发送过的分组,这叫做超时重传。

      • 要实现超时重传,要在发送完一个分组设置一个超时计时器,如果在超时计时器到期之前收到了对方的确认,就撤销以设置的超时计时器

    • 确认丢失和确认迟到

      • 在这里插入图片描述
      • B发送的确认丢失,A重传数据,B又收到数据,会采取丢弃重复数据,向A发送确认 。
      • B对分组的确认迟到,A会收到重复的确认,丢弃即可,B还会收到重复数据,同样丢弃,重传确认
  • 连续ARQ协议

    • 发送方维持发送窗口,位于发送窗口的分组都可以连续发送出去,不需要等待对方的确认,可提高信道利用率
    • 连续ARQ协议规定,发送方每收到一个确认,就把发送窗口向前滑动一个分组的位置,然后可以继续发送新覆盖的分组。
    • 接收方一般采用累计确认的方式,接收方不必逐个发送确认,而是可以在收到几个分组后,对按序到达的最后一个分组发送确认,这样就表示,到这个分组为止的所有分组都正确收到了
    • 优点:容易实现,确认丢失也不必重传
    • 确定:不能向发送方反映出接收方已经正确收到的所有分组的信息

4、提供全双工通信。TCP连接的两端都设有发送缓存和接收缓存,用来临时存放双向通信的数据
5、面向字节流。“流”是指流入到进程或从进程流出的字节序列。TCP把应用程序交下来的数据堪称仅仅是一连串的无结构的字节流,不知道字节流的含义。


TCP连接的端点叫做套接字或插口

端口号拼接到IP地址即构成了套接字

套接字的表示方法是在点分十进制的IP地址后面写上端口号,中间用冒号或逗号隔开,例:192.3.4.5:80

套接字socket=(IP地址: 端口号)

每一条TCP连接唯一地被通信两端的两个端点(即两个套接字)所确定,即:

TCP连接::={socket1, socket2} = {(IP1: port1), (IP2, port2)}


首部格式

在这里插入图片描述

TCP报文段首部的前20个字节是固定的,后面有4N字节是根据需要而增加的选项。最小20,最大60

1,2、源端口和目的端口:各占2字节。
3、序号:4字节。范围是 [ 0 , 2 32 − 1 ] [0,2^{32}-1] [0,2321]。在一个TCP连接中传送的字节流中的每一个字节都按顺序编号。序号字段值指的是本报文段所发送的数据的第一个字节的序号,也称作“报文段序号”
4、确认号:4字节。期望收到对方下一个报文段的第一个数据字节的序号。如B正确收到A发送的报文段,序号字段为501,数据长度为200,则数据序号分别为501~700,表明B正确收到A发送的到700为止的数据,因此B期望收到A的下一个数据序号为701。

确认号=N,就表明:到序号N-1为止的所有数据都已正确收到

5、数据偏移:4位。指出TCP报文段的数据起始处距离TCP报文段的起始处有多远,即指出TCP报文段的首部长度。
6、保留,6位。保留为今后使用,目前置为0
7、紧急URG,当URG=1,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据),而不按原先排队顺序来传送。
8、确认ACK,仅当ACK=1时确认号字段才有效。当ACK=0时,确认号无效。TCP规定,连接建立后的所有传送报文段都必须把ACK置1。
9、在这里插入图片描述10、复位RST,当RST=1时,表明TCP连接中出现严重差错,必须释放连接,然后再重新建立运输连接。RST置1还用了拒绝一个非法的报文段或拒绝打开一个连接。
11、同步SYN,连接建立时用来同步序号。SYN=1而ACK=0时,表明是一个连接请求报文段。如果对方同意建立连接,响应报文段中使SYN=1和ACK=1。所以,SYN置1表示这是一个连接请求或连接接受报文。
12、终止FIN,用来释放一个连接。FIN=1,表示此报文段的发送方的数据已发送完毕,并要求释放运输连接。
13、窗口,2字节。是 [ 0 , 2 16 − 1 ] [0,2^{16}-1] [0,2161]的整数。指发送本报文段的以方的接收窗口。窗口值告诉对方:从本报问段首部中的确认号算起,接收方目前运行对方发送的数据量。
14、检验和,2字节。检验和字段检验的范围包括首部和数据两部分。
15、紧急指针,2字节。仅在URG=1时才有意义,指出本报文段中的紧急数据的字节数。即使窗口为0也可以发送紧急数据。
16、选项,长度可变,最大40字节。

连接管理

三个阶段:连接建立、数据传送、连接释放

连接建立

在这里插入图片描述
B的TCP服务器进程先创建传输控制块TCB,准备接受客户端进程的连接请求,然后就处于listen的状态。

A的TCP客户进程也是首先创建传输控制模块TCB,然后向B发送连接请求报文。

TCB(Transmission Control Block)存储了每一个连接中的一些重要信息,如:TCP连接表,到发送和接收缓存的指针,到重传队列的指针,当前的发送和接收序号等等。

1、A发送连接请求:SYN=1,选择一个初始序号seq=x
2、B收到连接请求,如同意建立连接,向A发送确认:
SYN=1,ACK=1,seq=y,确认号ack=x+1
3、A收到B的确认,向B给出确认。ACK=1,确认号ack=y+1,主机的序号seq=x+1

连接释放

在这里插入图片描述1、A的应用进程先向其TCP发出连接释放报文段,并停止发送数据,主动关闭TCP连接。连接释放报文段首部:FIN=1,seq=u,序号等于前面已传送过的数据的最后一个字节的序号加1。
2、B收到连接释放报文段后即发出确认,确认号ack=u+1,seq=v,等于B前面已传送过的数据的最后一个字节的序号加1。
从A到B方向的连接就释放了

3、A收到B的确认后,等待B发出连接释放报文段
B连接释放报文段FIN=1,ack=u+1
4、A收到连接释放报文段,A确认,ACK=1,ack=w+1,seq=u+1


在这里插入图片描述

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

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

相关文章

关于【系统学习】和【按需学习】我想说的

😜作 者:是江迪呀✒️本文关键词:心得、闲聊、学习、知识☀️每日 一言:不要停驻不前,做一点点都要比什么都不做强上百倍! 前言 说起来学习,那就离不开学习的方式。学生时期我们的…

SpringCloudAlibaba实战入门之RocketMQ消息发送(六)

本篇文章是承接上一篇文章《SpringCloudAlibaba实战入门之RocketMQ下载配置和启动(五)》,如果没有看过上一篇文章并按照指导配置和启动Rocket MQ的网友,请先阅读该篇文章以后再阅读本篇 一、创建spring-cloud-rocketmq项目 1、复制之前的项目模块新建一个项目模块,修改新…

5个有趣实用的小工具推荐,让你的生活更加丰富多彩

5个有趣实用的小工具推荐,让你的生活更加丰富多彩 在现代社交媒体和科技的发展中,我们可以利用各种小工具来增添生活的乐趣和便利。今天,我将向大家推荐一些有趣且实用的小工具,这些工具不仅能够让你的生活更加丰富多彩&#xff…

算法分析基础题目

第一章-算法概述 递归算法必须具备的两个条件是边界条件或停止条件和递推方程或递归方程冒泡排序时间复杂度是___,堆排序时间复杂度是___。 O ( n 2 ) O(n^2) O(n2), O ( n l o g n ) O(nlogn) O(nlogn)斐波那契数列的第1项为1,第2项为2,以…

Labview通过OPC与S1200通信

一、配置PC的IP地址 二、S7-1200的配置 通过博图,在PLC CPU的属 性-常规-保护里勾选“允许从 远程伙伴使用PUT/GET通信 访问 三、新建一个DB1数据块,在DB1里新建一个变量,例如 名称为“ASD”,类型为“Word” 四、右击“DB1”&…

全球项目管理软件排行榜揭晓:谁将问鼎榜首?

项目管理软件是一种能够帮助企业和组织有效规划、执行和监控项目的工具。这些软件通常具有任务分配、资源管理、时间跟踪、报告生成等功能,可以提高项目管理的效率和质量。 项目管理软件为企业带来的便利 使用项目管理软件可以帮助企业和组织更好地管理项目&#x…

基于UDP协议的千兆以太网传输(FPGA)

[TOC]基于UDP协议的千兆以太网传输(FPGA) 一、UDP协议概述 UDP协议是一种基于无连接协议,即发送端发送数据无需确认接收端是否存在;接收端收到数据后也无需给发送端反馈是否收到,所以UDP在数据发送过程中允许丢失一两…

学会Pointer指针事件 ,一套拖拽事件两端(PC端、移动端)跑

早期浏览器很low,它只存在鼠标事件(MouseEvent)。随时代的发展出现了智能手机、平板电脑等触屏设备,交互方式发生了变化,单纯的鼠标事件已不够开发人员使用了。于是引入了触摸事件(TouchEvent)。不过这还不够完美,没有把触控笔事件…

深度卷积神经网络(AlexNet)

目录 1.基础简介 1.1基础介绍 1.2基础架构 2.Alexnet与LeNet的对比 3.参考代码 4.李沐老师给出的例子 1.基础简介 1.1基础介绍 2012年,AlexNet横空出世。它首次证明了学习到的特征可以超越手工设计的特征。它一举打破了计算机视觉研究的现状。 AlexNet使用…

[洛谷]P1162 填涂颜色(搜索连通块)

关键思路转换&#xff1a;从边界为0开始搜索&#xff0c;并且都标记&#xff0c;这些标记的不会被1包围&#xff0c;被1包围的肯定0不会被标记到&#xff0c;所以到时候把没被标记的0就是变成2即可。 详细&#xff1a; ACcode: #include<bits/stdc.h> using namespace s…

SpringCloud(2) 注册中心Eureka、Nacos

目录 1.背景2.Eureka 注册中心3.Nacos 注册中心4.常见面试题1&#xff09;服务注册和发现是什么意思&#xff1f;Spring Cloud 如何实现服务注册发现&#xff1f;2&#xff09;Nacos 和 Eureka 有什么区别&#xff1f; 1.背景 注册中心是微服务中必须要使用的组件&#xff0c;…

JavaWeb 笔记——2

JavaWeb 笔记——2 一、Maven1.1、Maven概述1.2、Maven简介1.3、Maven基本使用1.4、IDEA配置Maven1.6、依赖管理&依赖范围 二、MyBatis2.1、MyBatis简介2.2、MyBatis快速入门2.3、解决SQL映射文件的警告提示2.4、Mapper代理开发 一、Maven 1.1、Maven概述 Maven是专门用于…

时序预测 | MATLAB实现PSO-LSTM(粒子群优化长短期记忆神经网络)时间序列预测

时序预测 | MATLAB实现PSO-LSTM(粒子群优化长短期记忆神经网络)时间序列预测 目录 时序预测 | MATLAB实现PSO-LSTM(粒子群优化长短期记忆神经网络)时间序列预测预测效果基本介绍模型介绍PSO模型LSTM模型PSO-LSTM模型 程序设计参考资料致谢 预测效果 基本介绍 Matlab基于PSO-LST…

高压线路距离保护程序逻辑原理(四)

四、距离I段快速动作程序逻辑框图 距离保护的故障处理程序主要有三个组成部分&#xff1a;手合及I段快速跳闸部分&#xff1b;I、II段延时动作部分&#xff1b;跳闸及后加速部分。后者在第二章的保护故障处理程序中作为各类保护共有的程序分析过。这里只分析I段的程序逻辑框图…

360手机刷机 360手机Xposed框架安装 360手机EdXposed、LSP 360手机xposed模块

360手机刷机 360手机Xposed框架安装 360手机EdXposed、LSP 360手机xposed模块 参考&#xff1a;360手机-360刷机360刷机包twrp、root 360刷机包360手机刷机&#xff1a;360rom.github.io 【前言】 手机须Twrp或root后&#xff0c;才可使用与操作Xposed安装后&#xff0c;重启…

① RESTful API

1.API&#xff08;Application Programming Interface&#xff09; API就是一个接口&#xff1b;例如玩某一款游戏&#xff0c;你不必知道游戏具体的实现细节&#xff0c;只需要知道点哪个键是哪个技能就够了&#xff0c;而这个键之所以能实现玩家与游戏的交互&#xff0c;是因…

在个人电脑上部署ChatGLM2-6B中文对话大模型

简介 ChatGLM2-6B 是清华大学开源的一款支持中英双语的对话语言模型。经过了 1.4T 中英标识符的预训练与人类偏好对齐训练&#xff0c;具有62 亿参数的 ChatGLM2-6B 已经能生成相当符合人类偏好的回答。结合模型量化技术&#xff0c;用户可以在消费级的显卡上进行本地部署&…

亚马逊点击广告有什么好处?

亚马逊点击广告可以带来以下几个好处&#xff1a; 1、增加曝光和可见性&#xff1a;亚马逊点击广告可以将你的产品展示给更多潜在的购买者。通过有针对性的广告活动&#xff0c;你可以提高产品的曝光度&#xff0c;使更多的人看到你的产品。 2、提高点击率和流量&#xff1a;…

Python 代码打包

这里写目录标题 1. pyc打包及重调用2. Cython打包及重调用 1. pyc打包及重调用 该打包方式仅为入门级&#xff0c;反编译后为源代码&#xff0c;毫无安全性 指令转换 python -m py_compile /path/**.py 代码统一转换 单个py文件打包 import py_compile py_file ["/home/…

基于STM32设计的青少年学习监控系统(华为云IOT)

一、设计需求 1.1 项目背景 近几年,我国儿童青少年的近视发生率越来越高,生活中总会看到许多小小年纪就戴着眼镜的小朋友。家长对孩子的用眼时间没有约束,电子产品对孩子眼睛的影响,写字姿势,有的孩子写字时握笔太低,以致整个人趴在桌子上等都是造成孩子近视的重要因素…