文章目录

  • 1. IP
    • 1.1 IP 首部的格式
    • 1.2 解决IP地址不够用的问题.
      • ① 动态分配 IP
      • ② NAT 机制. 网络地址替换
      • NAT IP 转换的过程
      • NAPT
      • NAT技术的缺陷
    • 1.3 网段划分
    • 1.4 子网掩码
      • 计算方式
    • 1.5 特殊的 IP 地址
  • 2. 数据链路层
    • 2.1 以太网帧格式
    • 2.2 MAC 地址
    • 2.3 MTU
      • MTU 对 IP 协议的影响.
      • MTU 对 UDP 协议的影响.
      • MTU 对 TCP 协议的影响.
    • 2.4 ARP 协议
      • ARP协议的工作流程
  • 3. DNS
    • 什么是DNS
    • 当下 DNS 服务器顶不住全世界访问.
      • 解决办法1
      • 解决办法2
      • 解决办法3
      • 解决办法4
  • 4. 面试题
    • 从浏览器中输入一个 URL 之后,都发生了哪些事情?

1. IP

1.1 IP 首部的格式

  • 版本: 表示的是 IP 首部的版本号. IPv4 的版本号为 4
  • 首部长度: 当没有可选项时, IP 首部的长度为 20 字节.
  • 服务类型: 由8位组成,3位优先权字段(已经弃用),4位TOS字段,和1位保留字段(必须置为0)。4位TOS分别表示:最小延时,最大吞吐量,最高可靠性,最小成本。这四者相互冲突,只能选择一个
  • 总长度: 字段长 16 比特,因此 IP 包的最大长度位 65535 .
  • 标识: (ID) 用于分片重组. 同一个分片的标识值相同,不同分片的标识值不同.
  • 标志: (Flags) 长度为3位. 第一位保留(未使用)现在必须是0。第二位置为1表示禁止分片,这时候如果报文长度超过MTU,IP模块就会丢弃报文。第三位表示"更多分片",如果位0就是最后一个分片,为1就是后面还有.
  • 片偏移: 用于标识被分片的每一个分段相对于原始数据的位置.第一个分片对应的值为0
  • 生存时间: (TTL) 这个字段表示一个 IP 数据报最多在网络上存活多久.每经过一个路由器,TTL会减少1,直到变成0则丢弃该包.
  • 协议: 指的是当前的数据被接收方收到之后,分用的时候,要把 载荷 内容交给传输层的哪个协议
  • 首部校验和: 类似于 CRC 这样的东西,此处只需要校验首部即可,载荷部分已经由其他协议校验过了.
  • 源地址: 32位比特构成,表示发送端 IP 地址
  • 目标地址: 32位比特构成,表示接收端 IP 地址

注: IPv6使用 16 个字节表示 IP 地址.

1.2 解决IP地址不够用的问题.

① 动态分配 IP

一个设备接入网络了,就分配.没接入网络就不分配.
(并不能彻底解决这个问题)

② NAT 机制. 网络地址替换

使用一个 IP 地址,来代表一批主机.

  • NAT能够将私有IP对外通信时转为全局IP。也就是就是一种将私有IP和全局IP相互转化的技术方法:
  • 很多学校,家庭,公司内部采用每个终端设置私有IP,而在路由器或必要的服务器上设置全
    局IP;
  • 全局IP要求唯一,但是私有IP不需要;在不同的局域网中出现相同的私有IP是完全不影响的;

局域网 IP :

  1. 10.*
  2. 172.16.* ~ 172.31.*
  3. 192.168.*

NAT IP 转换的过程

  • NAT路由器将源地址从10.0.0.10替换成全局的IP 202.244.174.37;
  • NAT路由器收到外部的数据时,又会把目标IP从202.244.174.37替换回10.0.0.10;
  • 在NAT路由器内部,有一张自动生成的,用于地址转换的表;
  • 当 10.0.0.10 第一次向 163.221.120.9 发送数据时就会生成表中的映射关系;

NAPT

那么问题来了,如果局域网内,有多个主机都访问同一个外网服务器,那么对于服务器返回的数据中,目的IP都是相同的。那么NAT路由器如何判定将这个数据包转发给哪个局域网的主机?
使用IP+port来建立这个关联关系

NAT技术的缺陷

  • 无法从NAT外部向内部服务器建立连接;
  • 转换表的生成和销毁都需要额外开销;
  • 通信过程中一旦NAT设备异常,即使存在热备,所有的TCP连接也都会断开;

1.3 网段划分

要求一个局域网里的主机,网络号要相同,主机号不相同.
两个相邻的局域网,网络号必须不相同.

  • 网络号: 标识网段, 保证相互连接的两个网段具有不同的标识
  • 主机号: 标识主机,同一网段内,主机之间具有相同的网络号,但是必须有不同的主机号

1.4 子网掩码

子网掩码非常有特点.左半部分都是 1,右半部分都是 0.
然后把子网掩码和ip地址进行按位与运算,得到的结果就是网络号.

计算方式

将 IP 地址和子网掩码进行“按位与”操作(二进制相同位,与操作,两个都是1结果为1,否则为0),得到的结果就是网络号。
将子网掩码二进制按位取反,再与 IP 地址位与计算,得到的就是主机号。

十进制 二进制
IP地址 180.210.242.131 10110100.11010010.11110010.10000011
子网掩码 255.255.248.0 11111111.11111111.11111000.00000000
网络号 180.210.240.0 10110100.11010010.11110000.00000000
主机号 0.0.2.131 00000000.00000000.00000010.10000011

1.5 特殊的 IP 地址

  1. 如果是主机号为 全0, 这个 IP 就表示网络号,表示当前这个网段
  2. 如果是主机号为 1,这个 IP 通常表示当前网段的"网关".(路由器的出入口)
  3. 如果是主机号为 全1,这个 IP 表示"广播 IP"
  4. 127.* (127.0.0.1 环回 IP 表示本机)

2. 数据链路层

2.1 以太网帧格式

  • 这里的"目的地址"指的是 mac地址
  • 这里的"源地址"指的是 mac地址
  • 帧协议类型字段有三种值,分别对应IP、ARP、RARP;
  • 帧末尾是CRC校验码

2.2 MAC 地址

  • MAC地址用来识别数据链路层中相连的节点;
  • 长度为48位,及6个字节。一般用16进制数字加上冒号的形式来表示(例如:08:00:27:03:fb:19)
  • 在网卡出厂时就确定了,不能修改。虚拟机中的MAC地址不是真实的MAC地址,可能会冲突;也有些网卡支持用户配置MAC地址

2.3 MTU

MTU相当于发快递时对包裹尺寸的限制。这个限制是不同的数据链路对应的物理层,产生的限制。

  • 以太网帧中的数据长度规定最小46字节,最大1500字节,ARP数据包的长度不够46字节,要在后面补填充位;
  • 最大值1500称为以太网的最大传输单元(MTU),不同的网络类型有不同的MTU;
  • 如果一个数据包从以太网路由到拨号链路上,数据包长度大于拨号链路的MTU了,则需要对数据包进行分片(fragmentation);
  • 不同的数据链路层标准的MTU是不同的;

MTU 对 IP 协议的影响.

由于数据链路层MTU的限制,对于较大的IP数据包要进行分包。

  • 将较大的IP包分成多个小包,并给每个小包打上标签;
  • 每个小包IP协议头的 16位标识(id) 都是相同的;
  • 每个小包的IP协议头的3位标志字段中,第2位置为0,表示允许分片,第3位来表示结束标记(当前是否是最后一个小包,是的话置为0,否则置为1);
  • 到达对端时再将这些小包,会按顺序重组,拼装到一起返回给传输层;
  • 一旦这些小包中任意一个小包丢失,接收端的重组就会失败。但是IP层不会负责重新传输数据;


MTU 对 UDP 协议的影响.

  • 一旦UDP携带的数据超过1472(1500 - 20(IP首部) - 8(UDP首部)),那么就会在网络层分成多个IP数据报。
  • 这多个IP数据报有任意一个丢失,都会引起接收端网络层重组失败。那么这就意味着,如果UDP数据报在网络层被分片,整个数据被丢失的概率就大大增加了

MTU 对 TCP 协议的影响.

  • TCP的一个数据报也不能无限大,还是受制于MTU。TCP的单个数据报的最大消息长度,称为MSS(Max Segment Size);
  • TCP在建立连接的过程中,通信双方会进行MSS协商。
  • 最理想的情况下,MSS的值正好是在IP不会被分片处理的最大长度(这个长度仍然是受制于数据链路层的MTU)。
  • 双方在发送SYN的时候会在TCP头部写入自己能支持的MSS值。
  • 然后双方得知对方的MSS值之后,选择较小的作为最终MSS。
  • MSS的值就是在TCP首部的40字节变长选项中(kind=2);

2.4 ARP 协议

ARP协议建立了主机 IP地址 和 MAC地址 的映射关系。

  • 在网络通讯时,源主机的应用程序知道目的主机的IP地址和端口号,却不知道目的主机的硬件地址;
  • 数据包首先是被网卡接收到再去处理上层协议的,如果接收到的数据包的硬件地址与本机不符,则直接丢弃;
  • 因此在通讯前必须获得目的主机的硬件地址

ARP协议的工作流程

  • 源主机发出ARP请求,询问“IP地址是192.168.0.1的主机的硬件地址是多少”,并将这个请求广播到本地网段(以太网帧首部的硬件地址填FF:FF:FF:FF:FF:FF表示广播);
  • 目的主机接收到广播的ARP请求,发现其中的IP地址与本机相符,则发送一个ARP应答数据包给源主机,将自己的硬件地址填写在应答包中;
  • 每台主机都维护一个ARP缓存表,可以用arp -a命令查看。缓存表中的表项有过期时间(一般为20分钟),如果20分钟内没有再次使用某个表项,则该表项失效,下次还要发ARP请求来获得目的主机的硬件地址

3. DNS

什么是DNS

DNS,即Domain Name System,域名系统。DNS是一整套从域名映射到IP的系统。

域名是一个字符串,如 www.baidu.com , hr.nowcoder.com
域名系统为一个树形结构的系统,包含多个根节点。其中:

  1. 根节点即为根域名服务器,最早IPv4的根域名服务器全球只有13台,IPv6在此基础上扩充了
    数量。
  2. 子节点主要由各级DNS服务器,或DNS缓存构成。
    DNS域名服务器,即提供域名转换为IP地址的服务器。
    浏览器、主机系统、路由器中都保存有DNS缓存。
    Windows系统的DNS缓存在 C:\Windows\System32\drivers\etc\hosts文件中,Mac/Linux系统的DNS缓存在 /etc/hosts 文件中。

当下 DNS 服务器顶不住全世界访问.

解决办法1

浏览器/客户端本身对域名解析结果会进行缓存.
这样就避免了大量的不必要的 DNS 请求

解决办法2

DNS 服务器也不是只有一台! 而是有多台~也叫做,根域名服务器.

解决办法3

为了更进一步的降低压力,各种网络运营商,也会构建自己的域名服务器镜像.

解决办法4

针对 DNS 服务器做镜像的时候还可以按照域名来进行进一步的划分.

4. 面试题

从浏览器中输入一个 URL 之后,都发生了哪些事情?

  1. 根据输入的域名,查询对应的 IP 地址
  • 查询浏览器自身缓存是否有对应的IP
  • 查询系统文件( hosts 文件)是否有对应的IP
  • 查询路由器缓存是否有对应的IP
  • 查询 DNS 服务器
  1. 构造一个 HTTP 请求
  • 首先进行 TCP 三次握手,建立连接
  • 传输层把这个 TCP数据 进行封装交给网络层,网络层把这个 TCP数据封装成 IP 数据报交给数据链路层,数据链路层再把这个数据封装成 以太网数据帧,(此时就涉及到了 IP地址映射到 MAC地址,依赖了 ARP 协议),交给物理层,物理层把这个数据转换成电信号,继续传输
  • 物理层又将数据交给数据链路层,数据链路层解析数据之后又交给网络层,路由器拿到了网络层中的 IP 数据报,取出其中的目的 IP, 查询路由表,找到下一个传输的目标,进而找到下一个要出书目标的MAC地址.再次进行封装.
  • 此时数据又达到了接收方,数据又要进行分用.物理层把光电信号转成以太网数据帧交给数据链路层.数据链路层解析出 IP 数据报交给网络层,IP 协议再进行解析,解析出 TCP 数据报,再根据 TCP 数据报中的端口号,找到对应的进程,把数据就放入到对应的socket 的接收缓冲区里
  1. 解析 HTTP 请求并响应
  • 应用程序调用对应的 socket api,从 TCP 接收缓冲区里读取数据,应用层把这个数据按照 HTTP 协议来解析,获取到其中的 URL.根据 URL 中指定的路径,知道了是要获取到 / 这个根路径
  • 服务器就会对 / 这个路径进行配置,映射到一个具体的html文件.服务器就会读取这个文件,把这个文件内容构造成一个 HTTP 响应数据,然后再调用 socket api进行发送
  • 又重复进行封装分用.最终发送到达用户主机.
  • 用户主机重复分用之后,把数据取出来交给应用程序.
  1. 根据得到的 HTTP 响应报文,解析这个报文,获取到其中 HTML 内容

  2. 根据 HTML 进行渲染.

计算机网络 --- IP相关推荐

  1. 计算机网络IP地址分配

    计算机网络IP地址分配 子网掩码: 一种用来指明一个IP地址的哪些位标识的是主机所在的子网,以及哪些位标识的是主机的位掩码. 利用子网掩码可将大的网络分成几个小的网络. IPv4地址分为A,B,C,D ...

  2. 更改计算机网络,终于理会如何更改计算机网络ip

    如何更改计算机网络ip 如何更改计算机网络ip?以下就是如何更改计算机网络ip等等的介绍,希望对您有所帮助. 1.首先在电脑桌面上找到"网络"图标后鼠标右键点击"属性&q ...

  3. 计算机网络——IP协议基础原理

    摘要 IP协议提供的一种统一的地址格式.它为互联网上的每一个网络和主机分配一个逻辑地址所以IP地址也叫逻辑地址,用来屏蔽物理地址的差异,MAC地址每一个机器都有一个编码.IP地址是32位二进制数据分为 ...

  4. 计算机网络——IP数据报分片

    计算机网络--IP数据报分片 例:一个数据报数据部分为3800字节,规定分片长度不超过1420字节,首部20字节,每个分片数据部分不超过1400字节(MTU为最大传输单元,包括首部和数据部分) 知识提 ...

  5. 计算机网络ip划分考题,IP地址划分测试题

    计算机网络关于IP地址划分的试题, 简单,实用.2个小时掌握计算机网络IP地址划分的问题. 1.你的网络使用B类IP地址,子网掩码是255.255.224.0,请问通常可以设定多少个子网? A.14 ...

  6. 计算机网络划分子网实验报告,计算机网络ip协议实验报告范文

    计算机网络ip协议实验报告范文 一.实验目的 1. 掌握几种常用的网络命令,通过使用这些命令能检测常见网络故障 2. 理解各命令的含义,并能解释其显示内容的意义 二.实验内容 1. 运行 Window ...

  7. 计算机网络·ip地址计算+ip地址配置+静态路由配置

    看完能会做计网作业你说神不神奇 一.解决各类IP地址 二.搭建网络拓扑图 三.配置ip地址 四.配置静态路由 某公司内部的网络拓扑如下图所示: 其中网络1有主机120台,网络2有主机60台,网络3有主 ...

  8. 计算机网络ip进制转换方法,IP地址与二进制之间的转换

    IP地址与二进制之间的转换 在讨论如何进行IP地址与二进制之间的转换前, 有必要解释一下IP地址与二进制的概念 IP IP协议是网络层的一个协议, 是能使连接到网上的所有计算机网络实现相互通信的一套规 ...

  9. 计算机网络: IP地址,子网掩码,默认网关,DNS服务器详解

    楔子: 以Windows系统中IP地址设置界面为参考(如图1), IP地址, 子网掩码, 默认网关 和 DNS服务器, 这些都是什么意思呢? 学习IP地址的相关知识时还会遇到网络地址,广播地址,子网等 ...

  10. 计算机网络 ip协议是,IP协议是什么

    导读:文主要介绍的是IP协议是什么,想必大家对IP协议并不陌生,但是你知道的具体含义吗?不知道的话就看来学习一下吧~~~本文引用地址:http://www.eepw.com.cn/article/27 ...

最新文章

  1. RocketMQ的原理与实践
  2. Javascript进阶:匿名函数详解
  3. android layout的一些注意事项
  4. su一键封面插件_插件分享丨一键制作SU爆炸分析图插件分享
  5. Linux 安装完毕要做的事
  6. mysql在线搭建从库_Mysql主从库搭建
  7. 迭代器的简单应用实践
  8. 新网域名查询和注册API接口类 源码
  9. 年轻人的第一台车“没了”,小米回应:新媒体同学抖错了机灵
  10. 如何解决linux下编译出现的multiple definition of错误
  11. 类 kotlin(13)
  12. MyBatis的三个基本要素
  13. python elasticsearch dsl_python 查询 elasticsearch 常用方法(Query DSL)
  14. 台式计算机配置清单及价格,电脑主机配置清单及价格(台式组装机电脑配置清单)...
  15. 分辨率、像素、像素尺寸、GSD、图片文件大小
  16. 软件测试工程师必备技能(初中高)
  17. 其实带宽≠速度 ADSL加速法完全功略
  18. 下载 | 数学分析八讲(修订版)
  19. 研究表明:菜鸟爱用右脑,专家爱用左脑!
  20. 液晶面板价格高涨,OLED电视或迎来春天

热门文章

  1. Win10连接***,取消在远程网络中使用默认网关
  2. emeditor所有的快捷键
  3. SQL server查询变动积分和当前积分
  4. Word中如何找回取消保存的文档内容
  5. 缠论 python 量化_【Python量化投资】基于技术分析研究股票市场
  6. java和当前时间比较_java比较时间
  7. Towards Emotional Support Dialog Systems论文笔记
  8. 你的先进性体现在哪里?
  9. 甘肃棚改“因城施策” 资源枯竭城“转型”焕生机
  10. C++ 获取可变模板参数类型