首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >【重学计网】基础部分

【重学计网】基础部分

作者头像
程序员三明治
发布2025-12-18 20:02:44
发布2025-12-18 20:02:44
120
举报
文章被收录于专栏:码力up码力up

内容来源于小林coding+自己总结

为什么要有 TCP/IP 网络模型?

对于同一台设备上的进程间通信,有很多种方式,比如有管道、消息队列、共享内存、信号等方式,而对于不同设备上的进程间通信,就需要网络通信,而设备是多样性的,所以要兼容多种多样的设备,就协商出了一套通用的网络协议。 这个网络协议是分层的,每一层都有各自的作用和职责,接下来就根据「 TCP/IP 网络模型」分别对每一层进行介绍。

如何计算网络地址和主机地址?

将 IP 地址分成两种意义:

  • 一个是网络号,负责标识该 IP 地址是属于哪个「子网」的;
  • 一个是主机号,负责标识同一「子网」下的不同主机;

怎么分的呢?这需要配合子网掩码才能算出 IP 地址 的网络号和主机号。 举个例子,比如 10.100.122.0/24,后面的/24表示就是 255.255.255.0 子网掩码,255.255.255.0 二进制是「11111111-11111111-11111111-00000000」,大家数数一共多少个1?不用数了,是 24 个1,为了简化子网掩码的表示,用/24代替255.255.255.0。 知道了子网掩码,该怎么计算出网络地址和主机地址呢? 将 10.100.122.2 和 255.255.255.0 进行按位与运算,就可以得到网络号,如下图:

将 255.255.255.0 取反后与IP地址进行进行按位与运算,就可以得到主机号。

IP协议的两个重要的能力

  1. 寻址:先匹配到相同的网络号(表示要找到同一个子网),才会去找对应的主机。
  2. 路由:就是要找到目标地址的子网,找到后进而把数据包转发给对应的网络内。

所以,IP 协议的寻址作用是告诉我们去往下一个目的地该朝哪个方向走,路由则是根据「下一个目的地」选择路径。寻址更像在导航,路由更像在操作方向盘。

TCP/IP是哪几层?

由上到下分成 4 层,分别是应用层,传输层,网络层和网络接口层。

每一层的封装格式:

网络接口层的传输单位是帧(frame),IP 层的传输单位是包(packet),TCP 层的传输单位是段(segment),HTTP 的传输单位则是消息或报文(message)。但这些名词并没有什么本质的区分,可以统称为数据包。

从输入 URL 到页面展示到底发生了什么?(非常重要)

  1. URL解析,从url中解析出协议、WEB服务器和文件名,然后根据这些信息生成HTTP请求消息。
  2. 然后就需要委托操作系统把HTTP请求消息发送给WEB服务器,但在发送之前需要查询到服务器的ip地址。 浏览器会先看自己的缓存里是否有,如果有就直接返回,没有就去问操作系统; 操作系统也会看自己的缓存,如果有就返回,没有就去hosts文件里看; 如果host文件里还没有,那浏览器会向本地DNS服务器发送DNS解析请求,本地DNS服务器会逐级查询,最终找到对应的IP地址。(逐级查询的流程就比较多了)
  3. 获取MAC地址:当浏览器得到 IP 地址后,数据传输还需要知道目的主机 MAC 地址,因为应用层下发数据给传输层,TCP 协议会指定源端口号和目的端口号,然后下发给网络层。网络层会将本机地址作为源地址,获取的 IP 地址作为目的地址。然后将下发给数据链路层,数据链路层的发送需要加入通信双方的 MAC 地址,本机的 MAC 地址作为源 MAC 地址,目的 MAC 地址需要分情况处理。通过将 IP 地址与本机的子网掩码相结合,可以判断是否与请求主机在同一个子网里,如果在同一个子网里,可以使用 ARP 协议获取到目的主机的 MAC 地址,如果不在一个子网里,那么请求应该转发给网关,由它代为转发,此时同样可以通过 ARP 协议来获取网关的 MAC 地址,此时目的主机的 MAC 地址应该为网关的地址。
  4. 建立TCP连接:主机将使用目标 IP地址和目标MAC地址发送一个TCP SYN包,请求建立一个TCP连接,然后交给路由器转发,等路由器转到目标服务器后,服务器回复一个SYN-ACK包,确认连接请求。然后,主机发送一个ACK包,确认已收到服务器的确认,然后 TCP 连接建立完成。
  5. HTTPS 的 TLS 四次握手:如果使用的是 HTTPS 协议,在通信前还存在 TLS 的四次握手
  6. 发送HTTP请求:连接建立后,浏览器会向服务器发送HTTP请求。
  7. 服务器处理请求并返回响应:服务器收到请求后,会扒开数据包的 MAC 头部、IP头、TCP的头,取到HTTP报文。
  8. 然后这里还可以扩展一些,就是我们一般在java的层面,Servlet容器会从HTTP报文中解析出请求行、消息头和消息体,并交给MVC去处理
  9. DispatcherServlet接收到请求后,根据HandlerMapping(处理器映射器)找到对应的处理器(Controller)来执行处理器的业务逻辑,可能会调用下层的Service以及dao层进行数据的CRUD。
  10. 处理完以后返回ModelAndView;然后在通过ViewResolve对ModelAndView进行处理,返回View视图;最后一步是进行渲染View,产生response
  11. 浏览器接收response并渲染页面
  12. 因为HTTP1.1是基于TCP的一个长连接,所以这里并不会立即四次挥手去断开

OSI网络模型有哪几层?

有 7 层,分别是应用层、表示层、会话层、传输层、网络层、数据链路层以及物理层。 每一层负责的职能都不同,如下: ●应用层,负责给应用程序提供统一的接口; ●表示层,负责把数据转换成兼容另一个系统能识别的格式; ●会话层,负责建立、管理和终止表示层实体之间的通信会话; ●传输层,负责端到端的数据传输; ●网络层,负责数据的路由、转发、分片; ●数据链路层,负责数据的封帧和差错检测,以及 MAC 寻址; ●物理层,负责在物理网络中传输数据帧;

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-12-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 为什么要有 TCP/IP 网络模型?
  • 如何计算网络地址和主机地址?
  • IP协议的两个重要的能力
  • TCP/IP是哪几层?
  • 从输入 URL 到页面展示到底发生了什么?(非常重要)
  • OSI网络模型有哪几层?
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档