华企号 后端开发 计算机网络体系

计算机网络体系

一、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地址服务器

作者: 华企网通李铁牛程序员

我是程序员李铁牛,热爱互联网软件开发和设计,专注于大数据、数据分析、数据库、php、java、python、scala、k8s、docker等知识总结。15889726201 我的座右铭:"业精于勤荒于嬉,行成于思毁于随"
上一篇
下一篇

发表回复

联系我们

联系我们

028-84868647

在线咨询: QQ交谈

邮箱: tech@68v8.com

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部