王道计算机网络学习笔记(5)——传输层和应用层

前言

文章中的内容来自B站王道考研计算机网络课程,想要完整学习的可以到B站官方看完整版。

五:传输层

5.1:传输层基本概述

传输层的功能:

1传输层提供进程和进程之间的逻辑通信

2复用和分用

微信和QQ都使用传输层的协议进行发送数据(复用);其他主机通过微信和QQ给我发送信息时也是通过传输层的协议,但是最后数据会分别发送到微信和QQ对应的进程(分用)。

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

4:传输层的两个协议(TCP/UDP

TCP:可靠、面向连接、时延大、适合大文件

UDP:不可靠、无连接、时延小、适合小文件

 

传输层的端口

端口是传输层用来标识主机中的应用进程,端口号长度为16位,能表示65536个不同的端口号

 

5.2:UDP协议 

主要特点:

无连接、不可靠、面向报文适合一次性传输少量数据、无拥塞控制适合很多实时应用、首部开销小只需要8BTCP首部需要20B。

 

UDP首部格式

UDP长度:首部+数据字段

UDP校验

IP数据报格式和协议种类

 使用伪首部来校验UDP、伪首部数据格式(只在接受双方进行校验时才出现,不会进行传递)

5.3.1:TCP协议特点和TCP报文段格式

TCP协议特点

面向连接、TCP连接只能是点对点、可靠有序不丢不重、全双工通信(有发送缓存和接收缓存)、面向字节流(流:流入到进程或从进程流出的字节序列)

TCP报文段首部格式

IP数据报格式、协议种类

UDP首部

TCP首部

序号、确认号、数据偏移

6个控制位

紧急位URGurgent):发送紧急数据,不用在缓存里排队

确认位ACKacknowledgement):在连接建立后所有传送的报文段都必须把ACK置为1

推送位PSHpush):接收方尽快交付接收应用进程,不再等到缓存填满再向上交付

复位RSTreset):标明TCP连接中出现严重差错,必须释放连接,然后再重新建立连接

同步位SYNsynchronous):表明是一个连接请求/连接接受报文

终止位FINfinish):表明次报文段发送方数据已发完,要求释放连接

窗口:指的是发送本报文段的一方的接收窗口,即现在允许对方发送的数据量

检验和:检验首部和数据,检验时要加上12B的伪首部,第四个字段是6

紧急指针:当URG = 1时有效,指出本报文段中紧急数据的字节数

5.3.2:TCP的连接管理

TCP连接传输的三个阶段(连接建立、数据传送、连接释放)

TCP连接的建立采用客户服务器方式,主动发起连接建立的应用进程叫做客户,而被动等待连接建立的应用进程叫服务器

TCP连接:

TCP的释放:

 

5.3.3:TCP的可靠传输

可靠:保证接收方进程从缓存区读出的字节流与发送方发出的字节流是完全一样的

TCP首部数据结构

TCP实现可靠传输的机制(校验、序号、确认、重传)

序号:

确认:

 

超时重传

重传时间:TCP采用自适应算法,动态改变重传时间RTTs(加权平均往返时间)

冗余ACK、快速重传

5.3.4:TCP流量控制

数据链路层讲过的三种流量控制方式

TCP首部数据格式

发送方的发送窗口取决于接收窗口rwnd拥塞窗口cwnd的最小值

当接收方给发送方发送一个rwnd = 0的报文段,过了一段时间接收方想给发送方重新发送一个rwnd != 0的报文段但是在中途丢失了,这时发送端的窗口长度还是为0就可能会造成操作系统死锁的现象(接收方想要发送方发数据,但是发送方有一直在等接收方重新调整自己的发送窗口长度)

TCP协议会为每一个连接设有一个计时器

5.3.5:TCP的拥塞控制

出现拥塞的条件

拥塞控制和流量控制的区别

拥塞情况不知道是哪几台主机发送过多造成的,发送方很多数据迟迟到不了接收方;而流量控制是一个点到点的过程,发送方发送速度过快而接收方的接收缓存不够。

拥塞控制的四种算法(慢开始、拥塞避免、快重传、快恢复)

两个假定:

接收窗口和拥塞窗口:

慢开始和拥塞避免(造成网络拥塞之后,初始值重设为1,门限值变原来的一半)

快重传和快恢复

六:应用层

6.1:网络应用模型

应用层对应用程序的通信提供服务

常见端口号:

两种网络应用模型

C/S模型

P2P模型

6.2:域名解析系统DNS

DNS将域名转换成IP地址

 域名:

 顶级域名:

 二级域名:

 域名服务器:(根域名服务器、顶级域名服务器、权限域名服务器、本地域名服务器)

域名解析过程(递归查询和迭代查询)

递归查询:叫别人找最后返回给本地域名服务器

迭代查询:本地域名服务器自己一层层地找

6.3:文件传输协议FTP(要和SFTP区分开、SFTP是基于SSH,端口号是22)

常见应用程序端口号

FTP工作原理

FTP、SFTP和SSH是三种不同的协议,其关系如下:

1:FTP是一种标准的网络协议,用于在客户端和服务器之间传输文件。

2:SFTP是一种基于SSH协议的加密协议,用于在客户端和服务器之间传输文件,可以保证传输的安全性。

3:SSH是一种安全协议,用于在客户端和服务器之间进行加密通信,可以保证通信的安全性。

在Linux系统下,可以通过以下方式使用这三种协议:

1:FTP:使用命令行工具如ftp或ncftp,或者使用GUI工具如FileZilla等。:

2:SFTP:同样可以使用命令行工具如sftp或psftp,或者使用GUI工具如FileZilla等。需要注意的是,SFTP需要在服务器上配置SSH服务。

3:SSH:使用命令行工具如ssh或putty等进行远程登录或执行命令。

6.4.1:电子邮件

组成结构(SMTP发、POP3收)

 

邮局协议POP3

 

网际报文存取协议IMAP

基于万维网的电子邮件(HTTP和SMTP相组合)

6.5:万维网和http协议

域名

万维网WWW(world wide web),是无数个网络站点和网页的集合

统一资源定位符URL可以唯一标识资源(文字、视频、音频)

超文本传输协议http

Cookie

非持久连接、持久连接

 HTTP的报文结构

 

 HTTP(Hypertext Transfer Protocol)是一种用于传输超文本的协议。它使用TCP/IP作为传输协议,通过客户端和服务器之间的请求和响应来进行通信。 

1. 请求行:包含请求方法、请求的URL和HTTP协议的版本。例如:GET /index.html HTTP/1.1

2. 请求头:包含一些附加的信息,如请求的主机、用户代理、内容类型等。每个头字段都以键值对的形式出现,用冒号分隔。例如:Host: www.example.com

3. 空行:请求头和请求体之间需要有一个空行。

4. 请求体:可选的,用于传输请求的数据,如表单数据、文件等。

5. 响应行:包含响应的状态码和状态消息。例如:HTTP/1.1 200 OK

6. 响应头:与请求头类似,包含一些附加的信息,如服务器类型、内容长度、响应时间等。

7. 空行:响应头和响应体之间需要有一个空行。

8. 响应体:包含服务器返回的数据,如HTML页面、图片、JSON数据等。

以上是HTTP协议的基本数据格式,不同的请求和响应可能会有不同的头字段和数据内容 

总结

以上是本文的全部内容,非常感谢你能看到这。

 

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

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

相关文章

Vue3基础知识

文章目录 第一章 vue3 安装1.1安装1.2开启服务器1.3 使用图形化界面1.4 Vite1.5 vue3项目打包1.6 vue3 创建项目1.6.1 vue create命令1.6.2 创建一个项目 第二章 vue3 基础2.1 vue3 的目录结构2.2 vue3 的起步2.2.2 data 选项2,2.3 methods 2.3 Vue3 指令2.4 vue3 模板语法2.4.…

vue3和tauri直接下载Binary 数组的二进制文件内容到本地

通过发送url请求,直接获取到一个文件的Binary 数组内容,然后通过tauri的api:writeBinaryFile保存文件到本地电脑。 发送请求的时候,要加上响应类型:responseType: ResponseType.Binary 然后等返回的响应内容&#xf…

Chat GPT是什么,初学者怎么使用Chat GPT,需要注意些什么

目录 Chat GPT是什么 初学者怎么使用Chat GPT 使用Chat GPT需要注意什么 一些简单的prompt示例 Chat GPT是什么 Chat GPT是由OpenAI开发的一种大型语言模型,它基于GPT(Generative Pre-trained Transformer)架构。GPT是一种基于深度学习的…

应对突发流量,如何快速为自建 K8s 添加云上弹性能力

作者:庄宇 以 Kubernetes 为代表的容器技术带来的是一种应用交付模式的变革,其正迅速成为全世界数据中心的统一 API。 为了保证业务持续稳定、用户访问不中断,高可用、高弹性等能力是应用架构设计不变的追求,多集群架构天然具备…

使用 uiautomator2+pytest+allure 进行 Android 的 UI 自动化测试

目录 前言: 介绍 pytest uiautomator2 allure 环境搭建 pytest uiautomator2 allure pytest 插件 实例 初始化 driver fixture 机制 数据共享 测试类 参数化 指定顺序 运行指定级别 重试 hook 函数 断言 运行 运行某个文件夹下的用例 运行某…

【软件测试面试】腾讯数据平台笔试题-接口-自动化-数据库

数据库题 答案: Python编程题 答案: 接口参数化题 答案: 接口自动化题 答案: 以下是我收集到的比较好的学习教程资源,虽然不是什么很值钱的东西,如果你刚好需要,可以评论区&#…

高斯误差线性单元激活ReLU以外的神经网络

高斯误差线性单位(GELU)激活函数由加州大学伯克利分校的Dan Hendrycks和芝加哥丰田技术研究所的Kevin Gimpel于2018年引入。激活函数是触发神经元输出的“开关”,随着网络的深入,其重要性也随之增加。最近几周,机器学习…

create database创建数据库失败

瀚高数据库 目录 环境 症状 问题原因 解决方案 环境 系统平台:Linux x86-64 Red Hat Enterprise Linux 7 版本:4.5.7 症状 1、执行如下sql语句创建数据库报错。 create database printcdburn with encodingUTF8 OWNERprintcdburn LC_COLLATEzh_CN.UTF-…

github 最简单的使用步骤(个人学习记录~)

github 使用步骤: (11条消息) github新手用法详解(建议收藏!!!)_github详解_怪 咖的博客-CSDN博客 1.获取ssh密钥 打开输入:ssh-keygen -t rsa -C “git账号” 输入之后一路Enter&#xff08…

谈谈VPN是什么、类型、使用场景、工作原理

作者:Insist-- 个人主页:insist--个人主页 作者会持续更新网络知识和python基础知识,期待你的关注 前言 本文将讲解VPN是什么、以及它的类型、使用场景、工作原理。 目录 一、VPN是什么? 二、VPN的类型 1、站点对站点VPN 2、…

labview 弹窗(子vi)

如果你遇到了需要在主vi运行时需要弹窗某个窗口(或者称为子vi,子画面),而且要主画面和子画面能独立运行各自的循环程序,本文能给你帮助。 本文的精髓在于: wait until Donefalse,表示子VI运行的同时,主vi也继续运行后面的代码,主…

win10下解决git报错 Permission denied(publickey)

今天在csdn的GitCode新建了一个项目,然后在windows下git clone时出现错误 gitgitcode.net: Permission denied (publickey). fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists. 完整…

Apache Doris (三十一):Doris 数据导入(九)Spark Load 4- 导入Hive数据及注意事项

目录 1. Spark Load导入Hive非分区表数据 2. Spark Load 导入Hive分区表数据 3. 注意事项 进入正文之前,欢迎订阅专题、对博文点赞、评论、收藏,关注IT贫道,获取高质量博客内容! 宝子们订阅、点赞、收藏不迷路!抓紧…

拼多多API接口,百亿补贴商品详情页面采集

电商API的数据类型 电商API提供的数据种类多样,一般可分为以下几类: 1.商品数据:商品ID、商品名称、商品价格、库存等。 2.交易数据:订单号、付款时间、收货人等。 3.店铺数据:店铺ID、店铺名称、开店时间、店铺评…

使用Canal同步mysql数据到es

一、简介 Canal主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费。 当前的 canal 支持源端 MySQL 版本包括 5.1.x , 5.5.x , 5.6.x , 5.7.x , 8.0.x 二、工作原理 MySQL主备复制原理 MySQL master 将数据变更写入二进制日志( binary log, 其中记…

【云原生】K8S单节点搭建

Kubernetes Kubernetes基础概念架构1、基础环境2、安装kubelet、kubeadm、kubectl 2、使用kubeadm引导集群1、下载各个机器需要的镜像2、初始化主节点 Kubernetes核心实战Pod Kubernetes基础概念 kubernetes具有以下特性: ● 服务发现和负载均衡 Kubernetes 可以使…

200行代码写一个简易的C++小黑窗贪吃蛇游戏

分享一个简易的小黑窗贪吃蛇,一共就两百行代码左右(包含注释),很适合初学者巩固语法来练练手. 如果后续需要其他功能也可以再添加. 先小小展示一下: 源码在文末免费领取. 使用工具: VS2019(不是用VS的也可以直接找出cpp和h文件复制到你们用的IDE,甚至是记事本都可以) 闲话…

【hadoop】hadoop的体系架构

hadoop的体系架构 HDFS的体系架构NameNodeedits文件(客户端的操作日志)fsimage文件(元信息文件) DataNodeSecondary NameNode Yarn的体系架构HBase主从架构的单点故障的问题 HDFS的体系架构 NameNode NameNode:主节点…

2023网络安全面试题汇总(附答题解析+配套资料)

随着国家政策的扶持,网络安全行业也越来越为大众所熟知,相应的想要进入到网络安全行业的人也越来越多,为了更好地进行工作,除了学好网络安全知识外,还要应对企业的面试。 所以在这里我归总了一些网络安全方面的常见面…

Vue中的事件处理

一,基本使用 1.使用v-on:事件名或者事件名绑定事件 常见的事件有: onclick, 鼠标单击事件; ondblclick, 鼠标双击事件;onmousedown,鼠标按下去的事件;onmouseup,鼠标弹起事件; onmouseover,onmouseente…