计算机网络传输层1.0

news2024/11/19 3:30:37

功能

传输层提供进程到进程的逻辑通信
复用和分用
传输层对收到的报文进行差错检测
TCP/UDP

提供进程到进程的逻辑通信

网络层是提供主机间逻辑通信
从网络层来看,通信双方为两台主机,IP数据包首部给出两台主机的IP地址
而实际上的两台主机通信时两台主机内的应用进程进行通信,应用进程间的通信也称端到端的逻辑通信

复用和分用

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

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

差错检验

网络层只检查IP数据报的首部,不检验数据部分是否出错,而传输层两个都检验

传输协议

提供两种不同的传输协议,即面向连接的TCP和无连接的UDP

寻址与端口

端口的作用

  • 端口使得应用层各种应用进程将数据通过端口向下交付给传输层,以及让传输层知道应当将其报文段中的数据向上通过端口交付给应用层相应的进程
  • 端口是传输层服务访问点TSAP,它在传输层的作用类似 IP地址在网络层中或 MAC地址在数据链路层的作用,只是端口标识进程,IP和MAC表示主机
  • 数据链路层的SAP是MAC地址,网络层的SAP是IP地址
  • 硬件端口指的是不同硬件设备进行交互的接口,而软件端口是应用层的各种协议进程与传输实体间进行层间交互的地址
  • 传输层和协议栈层间的抽象的协议端口是软件端口

端口分类

复用、分用
端口只有本地意义

端口号按范围分为服务端使用的端口号和客户端使用的端口号
在这里插入图片描述

套接字

Socket = (主机IP地址、端口号),使用套接字识别端点,标识主机及其某个进程

TCP/UDP

在这里插入图片描述

UDP

特点:

  • 无连接,减少时延
  • 尽最大努力交付,即不保证可靠交付
  • UDP面向报文,适用于一次性传输少量数据的网络应用
  • 无堵塞控制,实时性强
  • UDP开销小
  • 发送报文时一次性发送

由于无须建立连接,则没有建立连接的时延,强实时性,弱可靠性

UDP是无连接状态,不需要维护连接状态(接收和发送缓存、拥塞控制参数和序号与确认号的参数),因此支持更多活动客户机

分组首部开销小
TCP的首部为20B,UDP仅有8B

应用层控制发送数据和发送时间更方便
因为没有拥塞控制,应用要求稳定速度,容忍一定的数据丢失,避免大时延

UDP常用于一次性传输数据较少的网络应用
如DNS、SNMP等采用TCP则会因为连接产生开销
UDP常用于多媒体应用

UDP提供最大努力交付,应用可在应用层实现维护传输可靠性

UDP面向报文,对应用层交下来的报文添加首部就交付IP层

UDP首部格式

在这里插入图片描述

UDP校验

在这里插入图片描述
在这里插入图片描述

TCP

面向连接,点到点,提供可靠交付服务,无差错,提供全双工通信,面向字节流(TCP将程序提供的数据看成一连串的无结构的字节流)

TCP报文段首部格式

TCP传送的数据单元称为报文段,分为TCP首部和TCP数据两部分
首部固定20B大小,4NB字节为选项
TCP既可用于运载数据,也可用来建立连接、释放连接和应答
在这里插入图片描述

  • 源端口和目的端口字段
  • 序号字段:记录本报文发送的数据的第一个字节的序号
  • 确认号字段:期望收到对方的下一个报文段的数据的第一个字节的序号,确认号为N则是表明N-1为止的所有数据都已正确收到
  • 数据偏移:与IP数据报分片的数据偏移进行区别,表示的是首部长度
  • 保留字段
  • 紧急位URG:URG=1表明紧急指针字段有效,提示系统报文段中有紧急数据需尽快传送,URG需要和紧急指针配合使用,指定数据从第一个字节到紧急指针所指的字节就是紧急数据
  • 确认位ACK:当ACK=1时生效,建立连接后必须将ACK设为1
  • 推送位PSH:PSH=1时,需要尽快地交付给接收进程,而不是等待缓存填满后再向上交付
  • 复位位RST:RST=1时,表明TCP连接出现差错,需要释放连接,重建连接
  • 同步位SYN:SYN=1表示这是个连接请求或连接接收报文,SYN=1,ACK=0表明这是一个连接请求报文,若同意请求则发送响应报文 SYN =1, ACK =1
  • 终止位FIN:释放连接,FIN=1表明报文段的发送方的数据已发送完毕,并要求释放传输连接
  • 窗口字段:表明允许发送的数据量
  • 校验和:与UDP相同,计算时加入伪首部
  • 紧急指针字段:指出紧急数据共有多少字节,位于报文段数据最前面
  • 选项字段:窗口扩大,数据段最大长度,时间戳等
  • 填充字段:使得首部长度为4B的整数倍,填充0

TCP连接管理

TCP连接的管理就是使运输连接的建立和释放都能正常进行

TCP需要解决三个问题:
要使双方能够确知对方的存在
要允许双方协商一些参数,对运输实体资源进行分配

三次握手

seq为序号字段,标明本次报文段数据部分的第一个字节的序号
ack是确认号字段,告诉对方,自己接下来接收的数据是从字节序号ack开始的数据
ACK是确认位,ACK 为1标明有效,为0则无效
SYN是同步位
在这里插入图片描述
第一步:C向S发送连接请求,此报文段不含应用层数据,首部SYN=1,seq =x,不携带数据,但消耗一个序号

第二步:S收到连接请求报文段时,若同意建立连接时则发回确认,并为该TCP连接分配TCP缓存和变量,在确认报文段中,SYN和ACK都为1,确认号为x+1,seq为y

第三步:当客户机收到确认报文段后,还要向服务器给出确认,同样要给该连接分配缓存和变量,报文ACK=1,seq=x+1,确认号字段ack=y+1,该报文段可携带数据,若不携带则不消耗序号

TCP是全双工通信,由于服务器资源在完成第二次握手时分配,客户端的资源在完成第三次握手时分配的,使得服务器容易收到SYN洪泛攻击

SYN洪泛攻击,攻击者发送多次SYN请求连接,服务器返回ACK后不应答,造成大量连接处于半连接状态,浪费资源

四次挥手

在这里插入图片描述
第一步:因为要关闭连接,因此发送FIN报文,FIN=1,seq=u,此为前面已经传送过的数据的最后一个字节序号+1,发送FIN报文后,仅仅关闭其中一条数据通路(TCP的全双工属性)
第二步:S收到FIN报文,ack=u+1,seq为v,同样是前面已经传送过的数据的最后一个字段序号+1,此时处于半关闭状态,即C到S的通路关闭,但S到C的通路还未关闭,因此S向C发送数据,C仍要接受
第三步:若S没有数据需要向C发送,则发送FIN报文段,通知C释放连接
第四步:S收到FIN报文时需要发出确认,ACK=1,ack=w+1,序号seq=u+1,等到过去2MSL后,S进入连接关闭状态
在这里插入图片描述

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

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

相关文章

Makefile路径处理:执行路径、绝对路径与相对路径的处理

问题描述 最近编写了一个 编译设备树 的 Makefile,遇到了使用 make -f xx/Makefile,执行路径变了,造成 Makefile 里面的一些操作路径不正确,无法执行 获取当前目录 make 内置的 $(CURDIR),可以把当前路径的全路径打印…

Three.js--》实现图片转3D效果展示

目录 项目搭建 初始化three.js基础代码 加载图片纹理 设置着色器 今天简单实现一个three.js的小Demo,加强自己对three知识的掌握与学习,只有在项目中才能灵活将所学知识运用起来,话不多说直接开始。 项目搭建 本案例还是借助框架书写th…

逻辑推理与集合

逻辑推理与集合是同一个过程的不同展示方式,这两者具有不同的特点。 逻辑推理通常是一种思维过程、语言文本的形式。 而集合则很容易采用一种可视化的方式进行展示,并且集合很容易进行交集、并集、补集、差集等计算。 把语言的逻辑推理过程转换为集合…

0602-指针和数组

数组名 数组名是一个地址常量,不允许赋值。它表示数组首元素的地址。 指针操作数组元素 指针访问数组 指针类型变量\常量1等同于指针保存的内存地址sizeof(指针指向的数据类型)。 2个相同类型的指针相减,得到的结果是2个指针的偏移量。其中偏移单位…

STL模型转有限元网格

随着计算机图形学、硬件和3D打印技术的发展,基于曲面三角网格的图形渲染及其文件格式越来越流行。 在有限元分析(FEA)中,工程师有时会得到基于三角形网格的几何文件(如STL文件等)并进行后续分析。 由于曲面…

华为OD机试真题 Java 实现【检查是否存在满足条件的数字组合】【2022Q4 100分】

一、题目描述 给定一个正整数数组,检查数组中是否存在满足规则的数字组合 规则:A B 2C 二、输入描述 第一行输出数组的元素个数。 接下来一行输出所有数组元素,用空格隔开。 三、输出描述 如果存在满足要求的数,在同一行…

【MySQL】不允许你不会SQL语句之DDL

目录 前言: 一.DDL数据库语句 1.1语句讲解 1.2总结 二.DDL表语句 2.1语句讲解 2.2总结 三.DDL字段语句 3.1语句讲解 3.2总结 四.MySQL数据类型 五.结尾 前言: 在从零到一入门MySQL一篇中,我们对数据库已经有了一定的了解&#xf…

Linux 设备树手动反编译 dtb 生成 源文件dts

验证平台 win10 64 位 VMware Workstation Pro 16 ubuntu 20.04 dtc 工具: 来自 linux-6.3.5 中的 scripts/dtc/ 安装 dtc 工具 其实可以通过安装 dtc 软件包,但不建议这么做,最好通过编译Linux 最新的内核,获取这个 dtc 工具…

利用Web Serial API实现Vue与单片机串口通信

一、Web Serial API介绍 Web Serial API 是一项 Web 技术,用于在浏览器中访问串行端口设备(如 Arduino、传感器等)并与之通信。它提供了一组 JavaScript 接口,使得 Web 应用程序可以通过 USB 串行端口连接到硬件设备,并…

华为OD机试真题 Java 实现【报数游戏】【2022Q4 100分】

一、题目描述 100个人围成一圈,每个人有一个编码,编号从1开始到100。他们从1开始依次报数,报到为M的人自动退出圈圈,然后下一个人接着从1开始报数,直到剩余的人数小于M。请问最后剩余的人在原先的编号为多少&#xff…

【JavaSE】Java基础语法(四十五):TCP UDP 全解

文章目录 1. TCP发送数据2. TCP接收数据【应用】3. TCP程序练习4. TCP程序文件上传练习【应用】5. UDP发送数据6. UDP接收数据【应用】7. UDP通信程序练习【应用】8. UDP三种通讯方式 1. TCP发送数据 Java中的TCP通信 Java对基于TCP协议的的网络提供了良好的封装,使…

chatgpt赋能python:Python删除文件目录

Python删除文件目录 Python是一种高级编程语言,广泛应用于开发各种类型的应用程序。Python的许多功能使其成为开发者的首选编程语言之一。在这篇文章中,我们将讨论如何使用Python删除文件和目录。 文件和目录的区别 在开始之前,让我们了解…

16_Linux内核启动流程

目录 链接脚本vmlinux.Ids Linux内核入口stext mmap_switched函数 start_kernel函数 rest_init函数 init进程 链接脚本vmlinux.Ids 要分析Linux启动流程,同样需要先编译一下Linux源码,因为有很多文件是需要编译才会生成的。首先分析Linux内核的连接脚本文件arch/arm/kem…

【Python】Python系列教程-- Python3 字符串(十一)

文章目录 前言Python3 字符串Python 访问字符串中的值Python 字符串更新Python 转义字符Python 字符串运算符Python 字符串格式化Python三引号f-stringUnicode 字符串Python 的字符串内建函数 前言 往期回顾: Python系列教程–Python3介绍(一&#xff…

计算机网络-网络层1.0

传输单位 网络层将分组从源端传到目的端,为分组交换网上的不同主机提供通信服务,传输单位为数据报 路由器 完成路由选择和分组转发 路由选择:按照分布式算法,根据从相邻路由器所得到的的关于整个网络拓扑的变化情况&#xff0…

操作系统第二章​练习题

第一部分 教材习题(P84) 1、什么是前趋图?为什么要引入前趋图?​ 前趋图:是用于描述程序段或进程之间执行的先后顺序的有向无循环图。 引入的原因:为了更好的描述程序的顺序和并发执行的情况。 试画出下面4条语句的前趋图&#…

LeetCode 2559 统计范围内的元音字符串数

LeetCode 2559 统计范围内的元音字符串数 来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/count-vowel-strings-in-ranges/description/ 博主Github:https://github.com/GDUT-Rp/LeetCode 题目:…

Vue3小兔鲜:组合式写法入门

Vue3&#xff1a;组合式写法入门 Date: May 11, 2023 认识Vue3 1. Vue3组合式API体验 通过 Counter 案例 体验Vue3新引入的组合式API <script> export default {data(){return {count:0}},methods:{addCount(){this.count}} } </script><script setup> imp…

【JavaSE】Java基础语法(四十四):XML解析

文章目录 1. 概述2.标签的规则3. 语法规则【应用】4. xml解析【应用】 1. 概述 万维网联盟(W3C) 万维网联盟(W3C)创建于1994年&#xff0c;又称W3C理事会。1994年10月在麻省理工学院计算机科学实验室成立。 建立者&#xff1a; Tim Berners-Lee (蒂姆伯纳斯李)。 是Web技术领域…

【分布族谱】高斯分布和逆高斯分布的关系

文章目录 高斯分布逆高斯分布简介通过高斯分布构造逆高斯分布 高斯分布 正态分布&#xff0c;又称Gauss分布&#xff0c;其概率密度函数入下图所示 正态分布 N ( μ , σ ) N(\mu, \sigma) N(μ,σ)受到期望 μ \mu μ和方差 σ 2 \sigma^2 σ2的调控&#xff0c;其概率密度函…