【计算机网络】TCP/IP协议栈—因特网层(网络层)

2024-01-20 11:32

本文主要是介绍【计算机网络】TCP/IP协议栈—因特网层(网络层),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

TCP/IP协议栈其他文章
网络参考模型
TCP/IP协议栈—应用层
TCP/IP协议栈—传输层
TCP/IP协议栈—网络接入层

文章目录

  • TCP/IP协议栈—因特网层(网络层)
    • IPv4报文格式
    • IP地址
      • 什么是IP地址
      • IP地址构成
      • IP地址分类(有类编址)
        • IP地址类型
      • IP地址计算
      • 为什么要划分子网(VLSM)
      • 特殊IP地址
      • 私网IP地址

TCP/IP协议栈—因特网层(网络层)

  • 传输层负责建立主机之间进程与进程之间的连接,而网络层则负责数据从一台主机到另一台主机之间的传递
  • 网络层的PDU被称为Packet(包)

IP协议

  • IP是Internet Protocol的缩写。Internet Protocol本身是一个协议文件的名称,该协议文件的内容非常少,主要是定义并阐述了IP报文的格式
  • 经常被提及的IP,一般不是特指Internet Protocol这个协议文件本身,而是泛指直接或间接与IP协议相关的任何内容

IPv4报文格式

  • Version—4位,声明IP协议版本(IPv4, Version=0100; IPv6, Version=0110)

  • Header Length 写作5(实际数值为20)

  • TOS(Type of Service)服务类型

  • Total Length 总长度=头部长度+数据长度(TCP头部+用户数据),整个IP包的长度

  • Identification,Flags,Fragment Offset这三个字段用于做分片,为碎片化服务

  • TTL(Time to Live)生存周期

    • 限制IP数据包在计算机网络中的存在的时间,大小只占1个Byte,最大值为255
    • IPv4的这个区域记录一个整数(比如30),表示在IP包接力过程中最多经过30个路由接力,如果超过30个路由接力,那么这个IP包就作废。IP包每经过一个路由器,路由器就给Time to Live减一。当一个路由器发现Time to Live为0时,就不再发送该IP包。
    • 不同设备的默认TTL值不同,Windows设备TTL=128,Unix设备TTL=255,Linux设备TTL=64,可通过ping主机看TTL值判断操作系统类型
  • Protocol 协议

    • 标识IP包上一层(IP上面不一定是传输层)是什么协议,大小1Byte=8bit=256
    • TCP(6),UDP(17),ICMP(1)
  • Header Checksum 头部校验和

  • Source IP Address 源IP,原地址,固定的,不会随意改变

  • Destination IP Address 目标IP,目标地址,固定的,不会随意改变

  • Options

    • 在头部的最后,是options。每个options有32位,是选填性质的区域。一个IPv4头部可以完全没有options区域。不考虑options的话,整个IPv4头部有20 bytes(上面每行为4 bytes)。但由于有options的存在,整个头部的总长度是变动的。
    • 用IHL(Internet Header Length)来记录头部的总长度

IP地址

什么是IP地址

IP地址详解,结合起来看

  • IP地址在网络中用于标识一个节点(或者网络设备接口)。
  • IP地址用于IP报文在网络中寻址

  • 一个IPv4地址有32bit
  • IPv4地址通常采用“点分十进制”表示

  • IPv4地址范围:0.0.0.0—255.255.255.255

IP地址构成

  • 网络部分:用来标识一个网络
  • 主机部分:用来区分一个网络内的不同主机
  • 网络掩码:区分一个IP地址中的网络部分和主机部分

10.1/24代表有24个1

IP地址分类(有类编址)

  • 为了方便IP地址的管理及组网,IP地址分为五类:

A类:网段类比较少,A类每个网段类的主机数量较多。
B类:比较均衡。
C类:网段较多,网段类的每个地址较少。
IP地址类型
  • 我们通常把一个网络号所定义的网络范围称为一个网段

  • 网络地址:用于标识一个网络

    • 例如:192.168.10.0/24
  • 广播地址:用于向该网络中的所有主机发送数据的特殊地址

    • 192.168.10.255/24
  • 可用地址:可分配给网络中的节点或网络设备接口的地址

    • 192.168.10.1/24

注意:
网络地址和广播地址不能直接被节点或网络设备所使用
一个网段可用地址数量为2n-2(n:主机部分比特位数)

IP地址计算

为什么要划分子网(VLSM)

  • 一个B类地址(216=65536个IP地址)用于一个广播域,地址浪费
  • 广播域太庞大,一旦发生广播,内网不堪重负

  • 将一个网络号划分成多个子网,每个子网分配给一个独立的广播域

    如此一来广播域的规模更小,网络划分更加合理,IP地址得到了合理利用

特殊IP地址

  • IP地址空间中,有一些特殊的IP地址,这些IP地址有特殊的含义和作用,距离吐下

本地链路地址==>DHCP地址

私网IP地址

  • **公网IP地址:**IP地址是由IANA统一分配的,以保证任何一个IP地址在Internet上的唯一性。这里的IP地址是指公网IP地址
  • **私网IP地址:**实际上一些网络不需要连接到Internet,比如一个大学的封闭实验室内的网络,只要同一网络中的网络设备的IP地址不冲突即可。在IP地址空间里,A、B、C三类地址中各预留了一些地址专门用于上述情况,称为私网IP地址
A类:10.0.0.0—10.255.255.255       10.0.0.0/8
B类:172.16.0.0—172.31.255.255     172.16.0.0/12
C类:192.168.0.0—192.168.255.255   192.168.0.0/24

TCP/IP协议栈其他文章
网络参考模型
TCP/IP协议栈—应用层
TCP/IP协议栈—传输层
TCP/IP协议栈—网络接入层

这篇关于【计算机网络】TCP/IP协议栈—因特网层(网络层)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/625874

相关文章

基于Go语言开发一个 IP 归属地查询接口工具

《基于Go语言开发一个IP归属地查询接口工具》在日常开发中,IP地址归属地查询是一个常见需求,本文将带大家使用Go语言快速开发一个IP归属地查询接口服务,有需要的小伙伴可以了解下... 目录功能目标技术栈项目结构核心代码(main.go)使用方法扩展功能总结在日常开发中,IP 地址归属地查询是一个常见需求:

HTTP 与 SpringBoot 参数提交与接收协议方式

《HTTP与SpringBoot参数提交与接收协议方式》HTTP参数提交方式包括URL查询、表单、JSON/XML、路径变量、头部、Cookie、GraphQL、WebSocket和SSE,依据... 目录HTTP 协议支持多种参数提交方式,主要取决于请求方法(Method)和内容类型(Content-Ty

Linux查询服务器 IP 地址的命令详解

《Linux查询服务器IP地址的命令详解》在服务器管理和网络运维中,快速准确地获取服务器的IP地址是一项基本但至关重要的技能,下面我们来看看Linux中查询服务器IP的相关命令使用吧... 目录一、hostname 命令:简单高效的 IP 查询工具命令详解实际应用技巧注意事项二、ip 命令:新一代网络配置全

Java对接MQTT协议的完整实现示例代码

《Java对接MQTT协议的完整实现示例代码》MQTT是一个基于客户端-服务器的消息发布/订阅传输协议,MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛,:本文主要介绍Ja... 目录前言前置依赖1. MQTT配置类代码解析1.1 MQTT客户端工厂1.2 MQTT消息订阅适配器1.

Linux中的自定义协议+序列反序列化用法

《Linux中的自定义协议+序列反序列化用法》文章探讨网络程序在应用层的实现,涉及TCP协议的数据传输机制、结构化数据的序列化与反序列化方法,以及通过JSON和自定义协议构建网络计算器的思路,强调分层... 目录一,再次理解协议二,序列化和反序列化三,实现网络计算器3.1 日志文件3.2Socket.hpp

Linux中的HTTPS协议原理分析

《Linux中的HTTPS协议原理分析》文章解释了HTTPS的必要性:HTTP明文传输易被篡改和劫持,HTTPS通过非对称加密协商对称密钥、CA证书认证和混合加密机制,有效防范中间人攻击,保障通信安全... 目录一、什么是加密和解密?二、为什么需要加密?三、常见的加密方式3.1 对称加密3.2非对称加密四、

Linux之UDP和TCP报头管理方式

《Linux之UDP和TCP报头管理方式》文章系统讲解了传输层协议UDP与TCP的核心区别:UDP无连接、不可靠,适合实时传输(如视频),通过端口号标识应用;TCP有连接、可靠,通过确认应答、序号、窗... 目录一、关于端口号1.1 端口号的理解1.2 端口号范围的划分1.3 认识知名端口号1.4 一个进程

如何在Spring Boot项目中集成MQTT协议

《如何在SpringBoot项目中集成MQTT协议》本文介绍在SpringBoot中集成MQTT的步骤,包括安装Broker、添加EclipsePaho依赖、配置连接参数、实现消息发布订阅、测试接口... 目录1. 准备工作2. 引入依赖3. 配置MQTT连接4. 创建MQTT配置类5. 实现消息发布与订阅

使用Python进行GRPC和Dubbo协议的高级测试

《使用Python进行GRPC和Dubbo协议的高级测试》GRPC(GoogleRemoteProcedureCall)是一种高性能、开源的远程过程调用(RPC)框架,Dubbo是一种高性能的分布式服... 目录01 GRPC测试安装gRPC编写.proto文件实现服务02 Dubbo测试1. 安装Dubb

Spring Boot 实现 IP 限流的原理、实践与利弊解析

《SpringBoot实现IP限流的原理、实践与利弊解析》在SpringBoot中实现IP限流是一种简单而有效的方式来保障系统的稳定性和可用性,本文给大家介绍SpringBoot实现IP限... 目录一、引言二、IP 限流原理2.1 令牌桶算法2.2 漏桶算法三、使用场景3.1 防止恶意攻击3.2 控制资源