文章目录

  • 一. IP协议
    • 1. IPv4报头介绍
    • 2. 解决IPv4地址不够用的问题
    • 3. IP地址管理
    • 4. 路由选择
  • 二. 以太网
  • 三. 浅谈DNS域名解析系统

一. IP协议

IP协议是位于OSI模型中第三层(网络层)的协议, 在这层上工作的不止这一个协议, 但IP协议是网络层传输所使用的最主流的一种协议, 有IPv4和IPv6两个版本, 目前IPv4在全球仍然是主流使用的协议, 但IPv6在中国已经基本普及了, 而且中国也是全球IPv6覆盖率最高的国家, 下面内容的介绍以IPv4为主.

1. IPv4报头介绍

IPv4协议格式如下:

版本(4位): 用来描述IP协议的版本, 这个属性只有两个取值, 即4, 6, 分别表示IPv4和IPv6.

首部长度(4位): 描述了IP协议首部的长度(报头), 单位是4字节, 报头中有选项部分的存在(可选字段+填充), 因此IP报头是变长的, 最大长度为15*4=60字节.

服务类型TOS(8位): 实际只有4位是有效的, TOS用来切换IP传输的四种形态/工作模式, TOS有效的4位分别表示最小延时(延迟尽量小), 最大吞吐量(传输速度尽量大), 最高可靠性(可靠性尽量大), 最小成本(资源消耗尽量小), 这四种状态, 在同一时间传输时, 只能选择一种模式; 而在实际开发中是很少专门去切换这几个模式的, 因为这几个模式都是站在技术角度来处理的, 而实际上, 性能瓶颈往往是业务带来的.

总长度(16位): 描述了一个IP数据报的总长度(报头+数据载荷), 最大长度不超过16位, 即64k, 这个长度减去IP报头长度, 剩下的就是载荷长度(一个完整的TCP /UDP数据报), 但只有16的总长度的限制并不意味着IP协议最大只能传输这16位长度的数据, 如果要传输的数据长度超过64k了, 在这个限制下IP协议自身还支持对包的拆分和组装, 也就是说如果网络层从传输层拿到的数据太长了, 超过64KB, 就会在网络层针对数据进行拆包, 也就是把一个数据分成多个IP数据报分别进行发送, 而接收方网络层会将载荷重新拼装再交给传输层; 实现有关拆包组包字段为16位标识, 3位标志, 13位片偏移.

标识(16位): 一份数据拆包发送时, 同一个数据报的数据, 标识是相同的.

标志(3位): 用来标志拆包的结束标志, 即将源数据的最后一个包标志为0, 否则为1.

片偏移(13位): 由13位构成, 用来标识被分包的每一个分包相对于原始数据的位置, 这样就算出现先发的包后到的情况, 也能确定该包在原始数据中的位置, 保证组包后数据的顺序不被打乱.

生存时间TTL(8位): 表示一个数据报在网络上能够传输的最大时间, 但这个时间的单位并不是 “时间单位”, 而是次数, 指的是可以中转多少个路由器的意思, 每经过一个路由器, TTL就会减少1, 如果TTL变成了0还没有到达目标, 此时就认为这个包永远都到不了, 就会丢弃该包.

协议(8位): 描述了当前载荷部分的内容时属于哪一个协议(TCP/UDP).

首部校验和(16位): 只针对IP协议首部进行校验, 载荷部分(TCP/UDP数据)自身已经有校验和了.

源地址, 目标地址(32位): 这是IP协议中最重要的组成部分, 源地址表示发送方的IP地址, 目标地址表示接收方的IP地址, 通常使用点分十进制的方式来表示IP地址, 就是将32位等分成4份每份8位, 比如117.86.92.37 这样数字串.

可选项和填充: 这个字段使IP首部是变长的, 填充部分是为了防止选项可能不是32位的整数倍, 为此, 通过向字段填充0, 调整为32比特的整数倍.

2. 解决IPv4地址不够用的问题

最主流的IPv4是用4字节来表示IP地址的, 最多能够给大约42亿9000万的设备分配地址, 而理想情况下是期望给每个设备都单独分配一个不同地址, 但由于现时代中互联网/物联网的高速发展, 想要给每个设备都分配一个地址, 4字节就不够用了.

现在为了解决IP地址不够用的问题, 主要有下面三种办法:

计网之IP协议和以太网相关推荐

  1. TCP/IP协议(2): 以太网(IEEE 802.3) 协议 —— 构成有线局域网的基本协议

    #TCP/IP协议(2): 以太网(IEEE 802.3)协议 -- 构成有线局域网的基本协议 关于以太网(IEEE 802.3) 协议 以太网(Ethernet) 是一套广泛应用于局域网(LAN), ...

  2. 前端面试计网、HTTP协议,操作系统(自留,持续更新)

    参考: https://juejin.cn/post/6844903590058786824 https://space.bilibili.com/327247876 https://blog.csd ...

  3. 计网 - 传输层协议 TCP:TCP 为什么握手是 3 次、挥手是 4 次?

    文章目录 Pre TCP 协议 主机到主机(Host-To-Host) 什么是连接和会话? 双工/单工问题 什么是可靠性? TCP 的握手和挥手 TCP 协议的基本操作 建立连接的过程(3次握手) 断 ...

  4. 计网:网络层协议ICMP

    1.背景 在日常生活或工作中,我们在判断与对方网络是否畅通,使用的最多的莫过于 ping 命令了. "那你知道 ping 是如何工作的吗?" -- 灵魂拷问 2.ICMP IP协议 ...

  5. 从零开始的计网学习——运输层(计网TCP/UDP协议部分,面试核心、高频考点,必读!)

    文章目录 5.1 运输层概述 5.2 运输层端口号.复用和分用的概念 端口号 发送方的复用和接收方的分用 5.3 UDP和TCP的对比 TCP的流量控制 5.5 TCP拥塞控制 慢开始算法 拥塞避免算 ...

  6. 计算机网络【IP协议与以太网】

    计算机网络[IP协议与核心协议]

  7. 【计网】TCP协议(四)

    16.netstat的用法 显示所有相关套接字的信息,包括监听和未监听的 ( 套接字(Socket):对网络中不同主机上的应用进程之间进行双向通信的端点的抽象.一个套接字就是网络上进程通信的一端,提供 ...

  8. TCP/IP协议专栏——以太网帧中的前导码和帧间隙-带宽计算 详解——网络入门和工程维护必看

    以太网帧长中的前导码和帧间隙 1 .概述 目前出现三个bug都涉及到L1和L2限速不准确的问题:在计算网络带宽时,报文设置的越小,差距就越大. 这个问题几乎所有新手都会遇到,在此梳理一下,以此与该问题 ...

  9. 【计网】IP地址、子网掩码、网络号、主机号、网络地址、主机地址以及ip段/数字-如192.168.0.1/24是什么意思?

    https://blog.csdn.net/gatieme/article/details/50989257

最新文章

  1. mysql 端口time_wait_TIME_WAIT状态全是3306解决办法
  2. python与excel结合-python3与Excel的完美结合
  3. python社区发现_这个 Python 项目厉害了!多个实战案例教你分析时空数据处理
  4. 深圳30周年看×××之旅
  5. 数据库表字段命名规则
  6. 科大星云诗社动态20210512
  7. 使用python 对图片进行水印,保护自己写的文章
  8. Myeclipse10.7安装git插件并将Java项目上传到码云(github)
  9. 软链接,xcode接lua文件夹
  10. 团队-爬虫豆瓣top250项目-模块开发过程
  11. 《机器学习实战》代码实现学习一 使用K-近邻算法改进约会网站的配对效果(数据准备)...
  12. 开篇之作,什么是云原生,云原生技术为什么这么火?
  13. CentOS8-Tomcat7安装并设置开机自启动
  14. matlab进化树的下载,mega(进化树构建软件)下载 v7.0.14免费版
  15. MATLAB线型英文名字
  16. 模块定义图(BDD)
  17. 数字化觉醒时代:传统企业云原生技术体系建设之路(一)
  18. 九龙证券“风光储锂芯”集体回暖 创业板指探低回升
  19. 自己开发的“万能数据库查询分析器”终于有了较大的成果
  20. 抖音矩阵号搭建及开发思路分享丨抖音矩阵源码丨抖音矩阵号运营

热门文章

  1. MAC802.11数据帧格式
  2. 当我一个人做游戏时,我在做些什么?专访15岁成名的天才游戏开发者
  3. 交换机基本配置(switch)--华为-思科
  4. 漫画:这份程序员自画像,有没有你?快来对号入座!
  5. 如何修改mtk6573的设备号
  6. hadoop在windows下安装
  7. 双冒号作用运算符以及命名空间详解,你确定不来看看吗?
  8. Fortran 双冒号的作用
  9. 服务计算作业:Docker 容器技术
  10. C语言>>打印以下的杨辉三角形(10行)