网络基础
2.1.网络协议
2.1.协议是什么?
协议可以被理解为“规则”,这些规则是数据传输和数据解释的规则。

2.1.2.OSI七级参考模型

- 物理层:可以理解我们的网络线,并进行位流传输
- 数据链层:可以理解计算机的网络卡,网络卡的驱动器可以提供媒体访问,网络管理等。
- 网络层:网络卡可以为网络地址和路由选项设置IP地址
- 传输层:可以想象为计算机内部的应用程序,建立一个主机到主机连接
- 会议层:建立、维护和管理会议
- 显示层: 处理数据格式, 数据加密等.
- 应用程序层:提供应用程序之间的通信
例:小明和小红使用qq软件重新解释 osi7模型
小明在qq软件中给小红的头发“问候”
数据封装
- KOMing_application layer:向KOMing发送的问候数据,加上应用程序层头部:应用程序层数据协议单元
- 小明显示层:不关心顶层的数据格式,将整个应用程序层的数据放在一个封筒中,加上显示层的数据头
- Ming_message层:将消息层标题添加到顶层的数据,并封印
- Ming_Transmission Layer:将上层的数据与传输层标题相连
- Ming_Network Layer:通过添加网络层标题覆盖顶层的数据
- 数据连结层:顶层数据与数据连结层头部相连;网络层数据也与数据连结层头部相连,形成最终传输数据
- Ming_Physical Layer: 发送到交换器
交换机: 发送到路由器
路由器:向小红色发送的物理层
数据解封装
- 小红物理层:截获小梅传输的数据并将其传递到数据链层
- Red_Data Chain Layer: 丢失红色数据的数据帧的头部, 进行数据校正, 数据无问题地变为红色, 数据完成, 数据转移到网络层
- 小红网层:与数据链层分离并转移到顶层
- 小红传输层:与数据链层分离并转移到顶层
- Red_Conversation层:解压缩并通过数据链层到顶层
- 小红指示层:与数据链层一起解耦并转移到顶层
- Small Red_Apply层:用数据链层解码,小红色看到"hello"

2.1.3.TCP/IP模型
TCP/IP协议堆栈,TCP/IP协议继承了互联网上的ISO模型,有些人说是四层,有些人说是五层,第四层是不计数物理层,无论哪一个,这不冲突,都可以。

图表显示,比tcp/ip相比,表示层和对话层较小

TCP/IP层实现的协议
- 应用层:
- HTTP: Hypertext Transfer Protocol(英语:Hypertext Transfer Protocol)是基于TCP的协议,使用80端口,用于将HTTP服务器的超文本传输到本地浏览器。
- SMTP:基于TCP的简单邮件传输协议,使用25端口,由源地址发送邮件到目的地地址的规则,控制邮件的发送和传输;例如QQ邮箱,是使用协议
- FTP:基于TCP的文件传输协议,通常通过FTP服务上传和下载,数据端口为20,控制端口为21
- 电话网:远程登录协议,基于TCP,使用23号端口,它是互联网远程登录服务的标准协议和主要模式.提供用户在本地计算机上执行远程主机工作的能力。使用端口用户计算机上的 telnet 程序连接到服务器.使用明码传送,保密性差、简单方便
- DNS:域名分析,基于UDP,使用53端口提供域名转换到IP地址
- SSH:基于TCP的安全接口协议,使用22端口建立基于应用程序层和传输层的安全的协议。 SSH目前是一种更可靠的协议,为远程登录对话和其他网络服务提供安全
- 传输层: TCP:传输控制协议。面向连接、可靠和基于字节流的传输层协议UDP:用户数据报告协议。不连接的通信协议,不可靠、基于报告的传输层通信协议SCTP:交通传输控制协议。一个面向连接的流传输协议;可以视为一个升级的TCP:多路径传输控制协议。TCP的多路径版本。尽管SCTP在开头两端有多个路径,但在实践中,这只是一条路径转移,当路径失败时,不需要断开连接,相反,他们转向其他路径。MPTCP实现了多路径并行传输的现实意义,在连接建立阶段,建立多条路径,然后使用多个路径同时传输数据
- 网络层: IP: 互联网协议.通过路由选择向接口层传递下一个IP包。IP Data Reporting(英语:IP Data Reporting)是一种无连接的服务,称为ICMP: Internet Control Reporting Protocol(英语:Internet Control Reporting Protocol)。是对网络层的补充。用于传输P主机与路由器之间的控制信息,确定网络是否不可访问,主机是否可访问,路由器是否可用,等等;这是cmd窗口 ping地址使用的协议。通过目标设备的IP地址,查询目标设备的MAC地址,确保通讯顺利进行;常用于交换路由器的RARP:逆地址分析协议
2.2.HTTP协议细节
2.2.1.HTTP
HTTP协议(英语:HTTP protocol),又称超文本传输协议,是互联网上最广泛使用的网络协议,它基于TCP应用程序层协议;
这是客户端与服务器通信的规则,它的模式非常简单:客户端启动请求,服务器响应请求。
2.2.2.版本分配
- HTTP于1991年首次发布,0.version 9,但现行版本已不再使用
- HTTP/1.0于1996年5月发布,引入了许多功能,并仍在使用
- HTTP/1.1,于1997年1月发布,是目前最受欢迎的版本,默认为永久连接
- HTTP/2于2015年5月发布,引入了许多功能,如服务器传送,是最新的版本。
2.2.3.HTTP请求
- 请求行:包含请求方法、请求地址和HTTP协议版本
- 消息标题:包含一系列键值对
- 请求常规表达式(可选):在注释和消息标题之间有一个空行


2.2.4.HTTP请求方法
- GET:从服务器获取指定资源(请求地址)的信息,通常只用于阅读数据,并不会修改资源,就像数据库查询一样
- POST:向指定的资源提交数据(例如提交表格、上传文件)并请求服务器处理数据。 数据包含在请求的原始文本中,可以创建新的资源或更新现有资源
- PUT:要求服务器通过指定资源的唯一标识符创建或更新资源(服务器上的特定存储位置)
- 删除:请求服务器删除指定资源
- 头部:与GET方法类似,从服务器中检索资源信息,与GET方法不同,顶部不包含显示数据,只是HTTP头条。HEAD的优点是,该方法无需传输所有内容,可以获取资源的源信息(或元数据)
- 选项:此方法允许服务器返回资源支持的所有HTTP请求方法;一个简单的理解是查看服务器支持哪些HTTP请求方法
2.2.5.HTTP响应
- 状态行:包含HTTP协议版本、状态代码和状态描述,由空间分隔
- 响应头条:即包含一系列关键值对的消息头条
- 答复句子: 返回内容, 注意头和答复之间有空行



2.2.6.HTTP响应状态代码
- 1XX消息:服务已收到请求并继续处理
- 200:OK 201:Created 202:Accepted Received 203:Non-Authoritative Information Non-Authoritative Information 204:No Content
- 301:移动永久请求永久请求 302:移动逝世请求临时请求 304:未修改的文件未修改,直接缓存的文件 305:使用代理使用代理
- 4XX请求错误:请求包含此方法错误或不能执行400:错误请求无法由401服务器理解: 未经授权请求未经授权.该状态代码必须与 WW-Authenticate头条域一起使用,以接收403:禁止服务器的请求,但是拒绝提供服务。服务器通常会在响应文404中给出不提供服务的原因:没有找到请求资源不存在,例如,输入错误的URL
- 5XX服务器错误:服务器在处理正确的请求时发生错误500:内部服务器错误服务器发生意外的错误,503:服务无法提供服务器目前无法处理客户端请求,在一段时间之后,服务器将恢复到正常504:门户休息时间
2.3.分析HTTP数据流的传输过程
用经典的面试问题作为缩写来解释:
请总结:从客户端打开浏览器到返回页面的服务器的中间过程
2.3.1.宏观分析
1)在客户端上,打开浏览器,在浏览器地址栏中输入ww。
2)点击网站并按车后,以下将发生:浏览器首先将尝试从主机文件.Baidu.com/相应的IP地址获取http://ww,如果可用,直接使用主机文件的分析结果;主机文件位于本地C:WindowsSystem32driversetc目录中


3)如果无法找到主机文件,则将使用DNS协议获取IP。 在DNS协议中,电脑在请求DNS服务器后,会要求你的本地DNS提供帮助,并接收百度IP

然后,浏览器请求相应的网络服务器的IP地址,网络服务器接收客户端的请求并响应,将请求的内容返回到客户端浏览器中
5)如果服务器正常运行,请给予“OK”状态代码为200,您所需的数据将被发送给您。你收到服务器的答复,文本以HTML格式。浏览器必须能够理解文本内容,并快速渲染到屏幕上,渲染出来后,你可以看到百度的头版
2.3.2.微观分析
1)域名分析:与宏观分析一样,搜索本地主机文件;无法找到,PC请求本地DNS帮助;最后获取域名IP
2)建立连接:
TCP Triple Handle:双向连接确认过程
- 步骤-1监控:首先客户端和服务器服务端处于LISTEN监控状态
- 客户端告诉服务器我要访问你,完成第一个握手;客户将发送一个TCPSYN,和标记为1的包;同时指出客户端与服务器连接的端口;并发送后,客户端输入SYN_SYNSEND状态;并完成第一个握手
- 步骤-3第二次握手:服务器告诉客户端我收到了SYN数据包,你的内容是SYN=1,并返回ACK=1数据包,和客户端的SYN=1和包到客户端;同时服务端从Listan状态转到SYN_RCVD状态;完成第二次握手
- 步骤-4客户端向服务器发送ACK:客户端再次访问服务器并发送ACK=1确认包,以确认服务器是否同意确认。
- 第五步第三手握(服务结束):
- 服务器接收客户端发送的ACK=1数据包,并在确认正确后输入相同的STABLISHED状态;
- 完成第三次握手

3)发送HTTP请求:通过宏分析,客户端发送获取或发送请求;服务器通常会返回200,OK,并返回您所需的HTML文本;客户端分析,渲染,并显示服务器提供的 heml文本
4)断开连接:
TCP四波:双向切断确认
- 客户端告诉服务器请求已经发送。我想和你断绝联系。不能发送任何数据,但在服务端,你可以向我发送数据,我也可以接收数据;客户将发送一个TCP端口,并且标志位为1的这样一个数据包;告诉服务端我已经不能发送任何数据,但是,我仍能收到数据,发送后,客户端输入 FIN_WAIT_1状态并完成第一波
- 步骤-2第二波(服务端):服务端确认客户端的 FIN数据包,返回ACK=1数据包,指示我收到客户要求关闭连接的请求,但在这方面,我还没有准备好关闭整个连接;服务端进入CLOSE_WAIT状态;完成第二次握手
- 步骤-3 客户端接收ACK并等待服务器关闭连接: 客户端接收ACK=1数据包发送到服务端口,并更改客户端状态为 FIN_WAIT_2;并等待服务器关闭连接
- 第四步第三波(服务结束):
- 服务器向客户端发送一个 FIN=1数据包,表明我能够关闭连接,并且响应数据已经发送。
- 服务端状态更改为LAST_ACK;等待客户发送ACK确认包
- 步骤-5第四波(客户端):客户端接收到服务器可以关闭的Fi数据包,并向服务器发送ACK=1数据包;告诉服务器没有问题,您关闭连接客户端状态被更改为Time_WAIT;
- 步骤-6服务端关闭连接:服务端收到给客户发送的ACK=1确认包后,关闭连接;服务端状态更改为CLOSED

本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/29026.html。