一、TCP/IP网络模型
应用层
负责在不同的应用层协议的约束下,如http、dns、ftp,通过应用进程间的交互来完成特定网络应用
应用层只需要专注于为用户提供应用功能即可,无需关心数据如何传输
应用层是工作在操作系统中的用户态,传输层及以下则工作在内核态
传输层
负责进一步为两台主机设备中进程之间的通信提供数据传输服务
有两个传输协议:TCP(可靠)和UDP(不可靠)
当应用层需要传输的数据较大,超过了传输层的MSS(TCP最大报文段长度),就要将数据包进行分块,然后分块传输
传输层负责将数据传输给指定主机设备的应用,这些应用使用端口号
进行区分
传输层的报文中会携带端口号
网络层
负责将将数据在互联网之中从一个设备传输到另一个设备
最常使用的是IP协议,当IP报文大小超过MTU(以太网一般为1500字节)就会进行分片
有两个重要作用:寻址和路由
寻址
IP地址分为网络号和主机号,分别通过与子网掩码和子网掩码的反码进行按位与运算即可得到
通过网络号和主机号进行寻址
路由
当IP数据包到达一个网络节点(路由器、交换机等等)时,通过路由选择算法决定走哪条路
所以,IP 协议的寻址作用是告诉我们去往下一个目的地该朝哪个方向走,路由则是根据「下一个目的地」选择路径。寻址更像在导航,路由更像在操作方向盘。
网络接口层
网络接口层主要为网络层提供「链路级别」传输的服务,负责在以太网、WiFi 这样的底层网络上发送原始数据包,工作在网卡这个层次,使用 MAC 地址来标识网络上的设备。
此处,涉及到IP地址与MAC地址的转换,需要使用ARP协议
总结
二、键入网址到网页显示,期间发生了什么?
HTTP请求——DNS——协议栈——TCP——IP——MAC——网卡——交换机——路由器——交换机——服务器
第一步浏览器解析URL地址
然后根据url地址,获得Web服务器域名,生成http请求
第二步查询服务器域名对应的IP地址
此时就需要使用DNS地址查询服务,现在本地缓存中查,没有再去各个层级去查,直到获得目标服务器IP地址
第三步将请求送往操作系统的协议栈
协议栈分为两部分,上部分是TCP、UDP协议,下部分是IP协议,IP协议中还包含ICMP和ARP
然后通过上述协议完成一系列操作
TCP协议
重要概念:可靠、序列号、确认号、状态位、窗口大小、流量控制、拥塞控制、三次握手、四次挥手
MSS
:除去 IP 和 TCP 头部之后,一个网络包所能容纳的 TCP 数据的最大长度,超过则拆解为一块块
IP协议
重要概念:IP地址、网络号、主机号、子网掩码、根据路由表选择发送的网卡
MTU
:一个网络包的最大长度,以太网中一般为 1500
字节。
MAC帧
重要概念:
发送方MAC地址在本机网卡中的ROM中
通过查询路由表得知目的方的MAC地址
ARP协议找MAC地址,其中有ARP缓存(只缓存几分钟),也会以广播的形式在以太网中(局域网内)询问MAC地址
第四步到达网卡
经过上述步骤,将形成一个网络包,(MAC头部(IP头部(TCP头部(HTTP报文))))
然后通过网卡将上述数字信号(网络包)转化为电信号
网卡中有缓存,将上述网络包添加帧首部和帧尾部,FCS帧校验序列
第五步到达交换机
上述数据帧从网卡发出后,首先送到在同一局域网内的交换机
交换机不具有MAC地址,而是接收记录所有包
交换机有MAC地址表存着两个信息:
存着设备的MAC地址和该设备连接在交换机的哪个端口上
于是根据目的MAC地址在交换机的MAC表中匹配从而将数据帧发出对应的端口
如果没有匹配到,则发往所有端口
- 因为路由器是基于 IP 设计的,俗称三层网络设备,路由器的各个端口都具有 MAC 地址和 IP 地址;
- 而交换机是基于以太网设计的,俗称二层网络设备,交换机的端口不具有 MAC 地址。
第六步到达路由器
经过不断重复第五步,数据帧最终会到达路由器
路由器也是通过查找路由表来转发数据帧的
首先通过MAC地址判断是否发给自己,然后去掉MAC头部,得到IP头部,查询路由表从而转发目标
查询路由表的过程就是将目的IP不断与子网掩码进行&运算,得到网络号进行对比
在上述过程中IP永远不会变,MAC一直变化
最终到达目标IP地址服务器
来源:https://www.cnblogs.com/Changes404/p/16970019.html
本站部分图文来源于网络,如有侵权请联系删除。