运输层概述及web请求

news2024/11/25 10:48:19

运输层

运输层概述

在这里插入图片描述

运输层向高层用户屏蔽了下面网络核心的细节(如网络拓扑、所采用的路由选择协议等)它使应用进程看见的就好像是在两个运输层实体之间有一条端到端的逻辑通信信道;

根据需求不同,运输层提供两种运输协议

面向连接的TCP

无连接的UDP

运输层复用分用,端口

端口

  1. 运行在计算机上的进程使用进程标识符pid来标志

  2. 不同的操作系统又使用了不同格式的进程标识符

  3. 为了使不同的操作系统进程之间进行网络通信,就必须使用统一的方法对TCP、IP体系的应用进程进行标识;

  4. TCP、IP体系的运输层使用端口号来区分应用层的不同应用进程;

    端口号使用16比特表示,取值0~65535

端口号只具有本地意义,端口号只是为了标识本地计算机应用层中的各进程,再因特网中,不同的计算机中相同端口是没有联系的;

复用分用

在这里插入图片描述

发送方

运输层的UDP对应用报文进行封装称为UDP复用;

运输层的TCP对应用层报文进行封装称为TCP复用;

IP协议对TCP报文段和UDP用户数据报的封装称为IP复用;

IP数据报首部中的协议字段的值表示封装的类型;

  • 取值为6表示封装的TCP数据报;
  • 取值为17代表封装的UDP数据报;

接收方

接收方的网络层收到IP数据报后进行Ip分用;

IP数据报首部协议字段值为17,将载荷的数据报上交运输层的UDP;

IP数据报首部协议字段值为6,将载荷的数据报上交运输层的TCP;

运输层对TCP数据报进行TCP分用;

运输层对UDP数据报进行UDP分用;

根据端口将报文交付给对应的应用进程;

案例

解析过程

在这里插入图片描述

1、用户在浏览器输入访问域名;

2、用户pc端的DNS客户端进程会发送查询dns查询请求报文;

(www.porttest.com对应的ip地址是什么)

3、dns的查询请求报文需要使用运输层的UDP协议封装成UDP数据报,这个过程UDP首部挑选一个未被占用的源端口如49152,表示客户端进程;

目的端口的值设置为53;将UDP数据报封装成IP数据报,通过以太网发送给DNS服务器;

4、DNS服务器解封出UDP数据报,根据首部信息的53端口,请求DNS服务器端进程解析请求报文的内容;查找出对应的地址;之后会给用户PC发送DNS响应报文,如www.porttest.com对应的ip地址是xx.xx.xx.xx,DNS服务器将端口,解析信息封装成UDP数据报,再通过IP封装发送给用户;

5、用户解封UDP数据报,请求DNS客户端进程解析数据报的载荷信息,就知道了访问的地址;

6、用户请求的数据报基于TCP封装,包括请求信息和80端口,再次经过IP封装的数据报发给web服务器端;

7、web服务器端解析数据报,向Http服务端请求该地址的Http响应内容,将数据封装成tcp数据报后经过Ip封装,发给用户;

8、用户解封数据报的http响应内容,在支持http格式的浏览器显示结果;

端请求该地址的Http响应内容,将数据封装成tcp数据报后经过Ip封装,发给用户;

8、用户解封数据报的http响应内容,在支持http格式的浏览器显示结果;

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

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

相关文章

buffer它到底做了个啥,源码级分析linux内核的文件系统的缓冲区

最近一直在学习linux内核源码,总结一下 https://github.com/xiaozhang8tuo/linux-kernel-0.11 自己整理过的带注释的源码。 为什么要有buffer ​ 高速缓冲区是文件系统访问块设备中数据的必经要道(PS:如果所有程序结果都不落盘,只是int a, a直接在主存…

TryHackMe-Debug(ez php反序列化)

Debug Linux机器CTF!您将了解枚举,查找隐藏的密码文件以及如何利用php反序列化! 端口扫描 循例,nmap Web枚举 进到web是apache默认页面,直接开扫 由于题目告诉我们涉及php反序列化,那直接找php文件来看&…

Linux学习第十四节-shell脚本

1.Shell概述 Shell连接了用户和Linux内核,他可以解释用户输入的命令传输给内核,让用户可以更加方便的使用Linux系统; Shell本身并不是内核的一部分,他只是站在内核的基础上编写一个应用程序; Shell具备编程的能力&a…

C++回顾(八)—— 继承

8.1 继承的概念 继承是类与类之间的关系,是一个很简单很直观的概念,与现实世界中的继承类似,例如儿子继承父亲的财产。 继承(Inheritance)可以理解为一个类从另一个类获取成员变量和成员函数的过程。例如类 B 继承于类…

jconsole远程linux下的tomcat

修改Tomcat的配置 进去 Tomcat 安装目录下的 bin 目录,编辑 catalina.sh vi catalina.sh定位到 ----- Execute The Requested Command ----------------------------------------- vi 编辑模式下,点击 Esc,输入 / ,然后粘贴 -…

什么是Netty

一.Netty介绍 1.什么是netty Netty 是由 JBOSS 提供的一个 Java 开源框架。Netty 提供异步的、基于事件驱动的网络应用程序框架,用以快速开发高性能、高可靠性的网络 IO 程序,是目前最流行的 NIO 框架,Netty 在互联网领域、大数据分布式计算…

自动驾驶介绍系列 ———— 看门狗

文章目录硬件看门狗软件看门狗差异分析延申窗口看门狗硬件看门狗 硬件看门狗的本质上是一个定时器电路。通常存在一个输入,输入到MCU的RST端。在正常工作状态下,MCU每隔固定时间间隔会输出一个信号给RST端,实现对看门狗端清零。如果在指定的时…

RK3568驱动OV13850摄像头模组调试过程

摄像头介绍品牌:Omnivision型号:CMK-OV13850接口:MIPI像素:1320WOV13850彩色图像传感器是一款低电压、高性能1/3.06英寸1320万像素CMOS图像传感器,使用OmniBSI?技术提供了单-1320万像素(42243136)摄像头的…

C++20 协程体验

1 介绍协程是比线程更加轻量级并发编程方式,CPU资源在用户态进行切换,CPU切换信息在用户态保存。协程完成异步的调用流程,并对用户展示出同步的使用方式。协程的调度由应用层决定,所以不同的实现会有不同的调度方式,调度策略比较灵…

麻雀算法SSA优化LSTM长短期记忆网络实现分类算法

1、摘要 本文主要讲解:麻雀算法SSA优化LSTM长短期记忆网络实现分类算法 主要思路: 准备一份分类数据,数据介绍在第二章准备好麻雀算法SSA,要用随机数据跑起来用lstm把分类数据跑起来将lstm的超参数交给SSA去优化优化完的最优参数…

Python可变对象与不可变对象的浅拷贝与深拷贝

前言 本文主要介绍了python中容易面临的考试点和犯错点,即浅拷贝与深拷贝 首先,针对Python中的可变对象来说,例如列表,我们可以通过以下方式进行浅拷贝和深拷贝操作: import copya [1, 2, 3, 4, [a, b]]b a …

小众实用!5款不为人知的Windows软件,让你工作更轻松

分享5款冷门但值得下载的Windows软件,个个都是实用,你可能一个都没见过,但是 我觉得你用过之后可能就再也离不开了。 1.键盘可视化——Keyviz Keyviz是一款免费开源的小工具,它的作用是可以实时展示键盘的操作,就可以…

编程语言分类

目录 ❤ 机器语言 机器语言的编程 ❤ 汇编语言 ❤ 高级语言(编程语言) 编译型 解释型 ❤ 动态语言和静态语言 ❤ 强类型定义语言和弱类型定义语言 ❤ 主流语言介绍 C语言 C java python JavaScript SQL PHP python从小白到总裁完整教程目录:https://blog…

浅入浅出keepalived+mysql实现高可用双机热备

当数据库发生宕机的情况,如果配置了数据库主从同步模式或主主同步模式,则可以从从库中获取数据。 当数据库发生宕机的情况,要求应用系统实现高可用,应用系统不会受到影响,需要对mysql进行双机热备实现数据库的高可用。…

断点调试(debug)

目录 F8案例 ​编辑 debug过程中报错 ​编辑用debug查看方法源码 一层一层查看 Arrays.sort()方法 F9 DebugExercise 介绍:断点调试是指在程序的某一行设置一个断电,调试时,程序运行到这一行就会停住,然后可以一步步往下调试…

微服务引擎 MSE 企业版全新升级

作者:流士 随着企业应用大规模云上迁徙与应用微服务化步伐加快,微服务治理的重要性对企业不言而喻,但微服务治理本身的规范化与标准化尚未形成,导致很多企业在微服务治理方面正经历着痛苦的试错期,甚至难以满足线上环境…

工作日志day03

同时构建静态和动态库 //如果用这种方式,只会构建一个动态库,虽然静态库的后缀是.a ADD_LIBRARY(hello SHARED ${LIBHELLO_SRC}) ADD_LIBRARY(hello STATIC ${LIBHELLO_SRC}) //修改静态库的名字,这样是可以的,但是我们往往希望他…

RK3568平台开发系列讲解(显示篇)DRM的atomic接口

🚀返回专栏总目录 文章目录 一、Property二、Standard Properties三、代码案例沉淀、分享、成长,让自己和他人都能有所收获!😄 📢目前DRM主要推荐使用的是 Atomic(原子的) 接口。 一、Property Property(属性)—– Atomic操作必须依赖的基本元素 Property把前面的…

【教学典型案例】28.生产环境nginx限制上传大小

目录一:背景介绍二:Nginx限制上传大小1、Nginx官方文档说明2、设置参数1)、在server模块中设置2)、在http模块中设置三:问题分析过程四:总结一:背景介绍 二:Nginx限制上传大小 1、N…

X264简介-Android使用(二)

X264简介-Android使用(二) 4、Ubuntu上安装ffmpeg: 检查更新本地软件包(如果未更新,reboot Vmware): sudo apt update sudo apt upgrade官网下载的source文件安装: http://ffmpe…