网络部分--网络基础相关

网络相关基础

TCP/IP网络模型

应用层

含义:应用层是应用程序的入口,我们的电脑或手机使用的软件都是在应用层实现的。

应用层协议:HTTP,HTTPS,FTP,Telenet,DNS等。

传输层

应用层的数据包会传给传输层,传输层是为应用层提供网络支持的。

传输层协议:TCP UDP等

TCP与UDP

TCP协议:全称传输控制协议,大部分应用使用的都是传输层协议。TCP具有流量控制,超时重传,拥塞控制等,都是为了保证数据包可靠的传输给对方。

UDP协议:UDP相对来说比较简单,只负责发送数据包,并不关心数据包是否能够到达,但实时性能比TCP更好一点。

应用需要传送的数据可能会非常大,如果直接传输就不好控制,因此当传输层的数据包大小超过MSS,就要将数据包分块,这样即使中途中有包丢失,只需要传送相应的数据包即可,在TCP协议中,我们把每个包分块称为一个TCP段。

端口:当设备作为接收方时,传输层则要负责把数据包传给应用,但是一台设备上可能会有很多应用在接收或者传输数据,因此需要用一个编号将应用区分开来,这个编号就是端口。

网络层

网络层:传送到设备的真正实现者,传输层是负责让其作为应用数据传输之间的媒介,帮助应用到应用的通信,实际传输功能交给网络层。

网络层协议:IP协议等

IP协议

作用:IP协议会将传输层的报文作为数据部分,再加上IP包头组装成IP报文,如果IP报文大小超过MTU,就会再次分片,得到的一个即将发送的IP报文。

对于数据从一个设备传送到另一台设备,世界上的设备有很多,又该如何找到对方呢。因此IP地址会给设备进行编号。

我们一般用IP地址给设备进行编号,对于IPV4协议,IP地址共32位,分成了四段,每段都是8位。

IP地址:网络号和主机号

网络号:负责标识该 IP 地址是属于哪个「子网」的

主机号:,负责标识该 IP 地址是属于哪个「子网」的

网络接口层

含义:生成了IP头部之后,在 IP 头部的前面加上 MAC 头部,并封装成数据帧(Data frame)发送到网络上。

核心作用

  • 负责把 IP 数据包封装成帧,在物理网络上收发

  • 屏蔽底层不同硬件(以太网、WiFi、PPP、4G)差异,向上只提供统一接口给 IP 层

  • 完成帧封装、MAC 寻址、差错校验、比特流传输

键入网址到网页显示,期间发生了什么

HTTP超文本传输协议
解析URL

键入网址第一步就是解析URL。因此浏览器第一部工作就是对URL进行解析。

一条合格的URL应该包含如下元素:http+//+web服务器+/+目录名+/+.......+文件名

生产的HTTP请求信息

对URL进行解析之后,浏览器确定了Web服务器和文件名,接下来根据这些信息来生成HTTP请求消息。

Get请求(无请求体,参数拼成URL)

复制代码
GET /api/user/list?page=1&size=10&keyword=test HTTP/1.1
Host: 127.0.0.1:8080
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
Accept: application/json,text/plain,*/*
Accept-Language: zh-CN,zh;q=0.9
Connection: keep-alive
Cookie: token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9;uid=10086

字段说明

请求行: GET 资源地址?参数 HTTP/协议版本,GET 参数拼接在 URL 后

请求头

  • Host:目标服务域名 + 端口(必填)
  • User-Agent:客户端浏览器 / 设备标识
  • Accept:客户端可接收的响应数据格式
  • Cookie:携带会话凭证、登录令牌

POST请求(JSON格式请求)

复制代码
POST /api/user/login HTTP/1.1
Host: api.xxx.com
Content-Type: application/json;charset=utf-8
Content-Length: 56
User-Agent: PostmanRuntime/7.37.0
Accept: */*

{"username":"admin","password":"123456","code":"888888"}
  • Content-Type:application/json:声明请求体是 JSON 数据
  • Content-Length:下方请求体字节长度,服务器用于解析报文
  • 空行:请求头与请求体必须换行分隔,HTTP 规范强制要求
DNS域名解析

通过浏览器解析URL之后会生成HTTP消息,需要委托给操作系统将消息发送给Web服务器。

在发送之前,还需要查询服务器域名对应的IP地址 ,有一种服务专门保存了web服务器域名和IP的对应关系,他就是DNS服务器。在域名中,越靠右的位置表示其层次越高。

域名的层次关系:

• 根 DNS 服务器(.)

• 顶级域 DNS 服务器(.com)

• 权威 DNS 服务器(server.com
域名的解析工作流程

1.客户端首先会发出一个 DNS 请求,问 www.server.com 的 IP 是啥,并发给本地 DNS 服务器(也就是客户端的 TCP/IP 设置中填写的 DNS 服务器地址)。

  1. 本地域名服务器收到客户端的请求后,如果缓存里的表格能找到 www.server.com,则它直接返回 IP 地址。如果没有,本地 DNS 会去问它的根域名服务器:"老大, 能告诉我 www.server.com 的 IP 地址吗?" 根域名服务器是最高层次的,它不直接用于域名解析,但能指明一条道路。

  2. 根 DNS 收到来自本地 DNS 的请求后,发现后置是 .com,说:"www.server.com 这个域名归 .com 区域管理",我给你 .com 顶级域名服务器地址给你,你去问问它吧。"

  3. 本地 DNS 收到顶级域名服务器的地址后,发起请求问"老二, 你能告诉我 www.server.com 的 IP 地址吗?"

  4. 顶级域名服务器说:"我给你负责 www.server.com 区域的权威 DNS 服务器的地址,你去问它应该能问到"。

  5. 本地 DNS 于是转向问权威 DNS 服务器:"老三,www.server.com对应的IP是啥呀?" server.com 的权威 DNS 服务器,它是域名解析结果的原出处。为啥叫权威呢?就是我的域名我做主。

  6. 权威 DNS 服务器查询后将对应的 IP 地址 X.X.X.X 告诉本地 DNS。

  7. 本地 DNS 再将 IP 地址返回客户端,客户端和目标建立连接。

至此,我们完成了 DNS 的解析过程。现在总结一下,整个过程我画成了一个图。

协议栈

通过DNS解析到IP地址后,就可以把HTTP的传输工作交给协议栈。协议栈的内部分为几个部分,分别承担不同的工作。上下关系是有一定的规则的,上面的部分会向下面的部分委托工作,下面的部分收到委托的工作并执行。

TCP

HTTP 是基于 TCP 协议传输的,所以在这我们先了解下 TCP 协议。

IP

TCP模块在执行连接、收发、断开等各阶段操作时,都需要委托 IP 模块将数据封装成网络包发送给通信对象。

报文详解:

在 IP 协议里面需要有源地址 IP 和 目标地址 IP:

• 源地址IP,即是客户端输出的 IP 地址;

• 目标地址,即通过 DNS 域名解析得到的 Web 服务器 IP。

因为 HTTP 是经过 TCP 传输的,所以在 IP 包头的协议号,要填写为 06(十六进制),表示协议为 TCP。

MAC

生成了 IP 头部之后,接下来网络包还需要在 IP 头部的前面加上 MAC 头部。

网卡

网络包只是存放在内存中的一串二进制数字信息,没有办法直接发送给对方。因此,我们需要将数字信息转换为电信号,才能在网线上传输,也就是说,这才是真正的数据发送过程。

负责执行这一操作的是网卡,要控制网卡还需要靠网卡驱动程序。

网卡驱动获取网络包之后,会将其复制到网卡内的缓存区中,接着会在其开头加上报头和起始帧分界符,在末尾加上用于检测错误的帧校验序列。

最后网卡会将包转为电信号,通过网线发送出去。

相关推荐
huluang6 小时前
密评多选题 — 陷阱名单(费曼自述法版)
网络·数据库·密码学
yyuuuzz7 小时前
AI模型部署中的常见稳定性问题
运维·服务器·网络·数据库·人工智能·云计算·github
ylscode7 小时前
HexStrike AI v6.0 深度解析:MCP协议驱动的网络安全自动化框架与红队规避实战
网络·人工智能·安全·安全威胁分析
8125035337 小时前
第 8 篇:IP 地址:互联网的门牌号
网络·网络协议·tcp/ip
liulilittle7 小时前
什么是“单流”?一个服务器上能不能同时存在多个“单流”?
服务器·网络·tcp/ip·计算机网络·信息与通信·tcp·通信
梁辰兴7 小时前
计算机网络基础:基于万维网的电子邮件
网络·计算机网络·计算机网络基础·梁辰兴·基于万维网的电子邮件·webmail
KaMeidebaby8 小时前
卡梅德生物技术快报|细胞周期检测抗原流式分析:参数调试、软件拟合与问题排查
网络·人工智能·python·网络协议·tcp/ip·算法·机器学习
梁辰兴8 小时前
计算机网络基础:邮件读取协议 POP3和IMAP
网络·计算机网络·imap·pop3·计算机网络基础·梁辰兴·邮件读取协议
艾莉丝努力练剑8 小时前
【QT】界面优化:QSS
linux·运维·开发语言·网络·qt·计算机网络·udp