计算机网络复习总结

计算机网络复习总结

基础篇

为什么有Tcp/ip网络模型

  • 对于同一台设备上的进程间通信,有很多种方式,比如有管道、消息队列、共享内存、信号等方式,而对于不同设备上的进程间通信,就需要网络通信,而设备是多样性的,所以要兼容多种多样的设备,就协商出了一套通用的网络协议
  • 这个网络协议是分层的,每一层都有各自的作用和职责

tcp/ip模型有哪几层?

在这里插入图片描述

  • TCP/IP 网络通常是由上到下分成 4 层,分别是应用层,传输层,网络层和网络接口层
  • 表示层 会话层 数据链路层 物理层
  • 网络接口层的传输单位是(frame),IP 层的传输单位是(packet),TCP 层的传输单位是(segment),HTTP 的传输单位则是消息或报文(message)。但这些名词并没有什么本质的区分,可以统称为数据包

键入网址到网页显示 发生了什么?

  • 孤单小弟 —— HTTP : 浏览器做的第一步工作是解析 URL 生成发送给 Web 服务器的请求信息

    • 图中的长长的 URL 实际上是请求服务器里的文件资源
    • 当没有路径名时,就代表访问根目录下事先设置的默认文件
    • 生产 HTTP 请求信息
  • 真实地址查询 —— DNS : 通过浏览器解析 URL 并生成 HTTP 消息后,需要委托操作系统将消息发送给 Web 服务器

    • 发送之前,还有一项工作需要完成,那就是查询服务器域名对应的 IP 地址
    • 有一种服务器就专门保存了 Web 服务器域名与 IP 的对应关系,它就是 DNS 服务器
    • 域名都是用句点来分隔的,越靠右的位置表示其层级越高
    • 域名的层级关系类似一个树状结构:
      • 根 DNS 服务器(.)
      • 顶级域 DNS 服务器(.com)
      • 权威 DNS 服务器(server.com)
    • 浏览器会先看自身有没有对这个域名的缓存,如果有,就直接返回,如果没有,就去问操作系统,操作系统也会去看自己的缓存,如果有,就直接返回,如果没有,再去 hosts 文件看,也没有,才会去问「本地 DNS 服务器
  • 指南好帮手 —— 协议栈 : HTTP 的传输工作交给操作系统中的协议栈

    • 应用程序(浏览器)通过调用 Socket 库,来委托协议栈工作。协议栈的上半部分有两块,分别是负责收发数据的 TCP 和 UDP 协议,这两个传输协议会接受应用层的委托执行收发数据的操作。
    • 协议栈的下面一半是用 IP 协议控制网络包收发操作,在互联网上传数据时,数据会被切分成一块块的网络包,而将网络包发送给对方的操作就是由 IP 负责的
    • IP 中还包括 ICMP 协议和 ARP 协议。
      • ICMP 用于告知网络包传送过程中产生的错误以及各种控制信息
      • ARP 用于根据 IP 地址查询相应的以太网 MAC 地址
  • 可靠传输 —— TCP : HTTP 是基于 TCP 协议传输的;

    • tcp头部报文格式:
      • 源端口号 16位 :源端口号目标端口号是不可少的,如果没有这两个端口号,数据就不知道应该发给哪个应用
      • 目的端口号 16位
      • 序号 32位:这个是为了解决包乱序的问题
      • 确认序列 32位 : 目的是确认发出去对方是否有收到。如果没有收到就应该重新发送,直到送达,这个是为了解决不丢包的问题
      • 状态位 SYN ACK RST FIN
      • 窗口大小。TCP 要做流量控制
      • TCP还会做拥塞控制 控制自己,也即控制发送的速度。不能改变世界,就改变自己
      • 另:三次握手 目的:**保证双方都有发送和接收的能力 ** 5条
        • 一开始,客户端和服务端都处于 CLOSED 状态。先是服务端主动监听某个端口,处于 LISTEN 状态。
        • 然后客户端主动发起连接 SYN,之后处于 SYN-SENT 状态。
        • 服务端收到发起的连接,返回 SYN,并且 ACK 客户端的 SYN,之后处于 SYN-RCVD 状态。
        • 客户端收到服务端发送的 SYNACK 之后,发送对 SYN 确认的 ACK,之后处于 ESTABLISHED 状态,因为它一发一收成功了。
        • 服务端收到 ACKACK 之后,处于 ESTABLISHED 状态,因为它也一发一收了
      • 查看tcp的连接状态 netstat -napt
      • tcp分割数据 : 超过了 MSS 的长度
        • MTU:一个网络包的最大长度,以太网中一般为 1500 字节。
        • MSS:除去 IP 和 TCP 头部之后,一个网络包所能容纳的 TCP 数据的最大长度
  • 远程定位 —— IP : TCP 模块在执行连接、收发、断开等各阶段操作时,都需要委托 IP 模块将数据封装成网络包发送给通信对象

    • 在 IP 协议里面需要有源地址 IP目标地址 IP
    • 客户端有多个网卡,就会有多个 IP 地址,那 IP 头部的源地址应该选择哪个 IP 呢?
      • 根据路由表规则,来判断哪一个网卡作为源地址 IP route -n
      • 和第一条目的子网掩码Genmask)进行 与运算 与 destination 比较
      • 其他所有条目都无法匹配 匹配默认网关
    • 加上了 IP 头部的数据包表示 :“有 IP 大佬给我指路了,感谢 IP 层给我加上了 IP 包头,让我有了远程定位的能力
  • 两点传输 —— MAC : 生成了 IP 头部之后,接下来网络包还需要在 IP 头部的前面加上 MAC 头部

    • 在 MAC 包头里需要发送方 MAC 地址接收方目标 MAC 地址,用于两点之间的传输
    • MAC 发送方和接收方如何确认?
      • 发送方的 MAC 地址获取就比较简单了,MAC 地址是在网卡生产时写入到 ROM 里的,只要将这个值读取出来写入到 MAC 头部就可以了
      • 接收方 按如何获取对方的 MAC 地址呢?需要 ARP 协议帮我们找到路由器的 MAC 地址
        • ARP 协议会在以太网中以广播的形式,对以太网所有的设备喊出:“这个 IP 地址是谁的?请把你的 MAC 地址告诉我”
        • 后续操作系统会把本次查询结果放到一块叫做 ARP 缓存的内存空间留着以后用,不过缓存的时间就几分钟
        • 先查询 ARP 缓存
  • 出口 —— 网卡 : 网络包只是存放在内存中的一串二进制数字信息,没有办法直接发送给对方。因此,我们需要将数字信息转换为电信号,才能在网线上传输,也就是说,这才是真正的数据发送过程

    • 负责执行这一操作的是网卡,要控制网卡还需要靠网卡驱动程序
    • 网卡驱动获取网络包之后,会将其复制</
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值