当前位置:首页 >  开发者 >  计算机网络体系结构快速梳理

计算机网络体系结构快速梳理

一、TCP/IP网络模型应用层负责在不同的应用层协议的约束下,如http、dns、ftp,通过应用进程间的交互来完成特定网络应用应用层只需要专注于为用户提供应用功能即可,无需关心数据如何传输应用层是工作在操作系统中的用户态,传输层及

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

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,
如果涉及侵权请联系站长邮箱:support@yingtwo.com 进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

原文链接:none

最近更新

Java外包程序员的技术出路
Java外包程序员的技术出路

学习的两个目的:应付面试应付工作(解决问题)首...

初识设计模式-迭代器模式
初识设计模式-迭代器模式

简介迭代器设计模式(IteratorDesig...

用python实现猜数字游戏
用python实现猜数字游戏

实现思路电脑随机生成1~100的整数,让用户去...

感悟一二
感悟一二

很多年了(快4年了),这么过的生活没有什么希望...

调试Rotor:启动过程
调试Rotor:启动过程

引言:我已经深入一些书籍好长一段时间了,包括(...

在游戏框架中添加支持
在游戏框架中添加支持

正如我们所工作所使用的其它内容资源,通过允许它...

OpenGL多线程创建纹理,附加我的测试结果
OpenGL多线程创建纹理,附加我的测试结果

关于这个问题以前只知道多个线程不能同时使用一个...

【转】水效模拟
【转】水效模拟

RealisticWater,Real-tim...

fibonacci递归实现
fibonacci递归实现

fibonacci数列:1,1,2,3,5,8...