网络原理TCP/IP(5)

文章目录

  • IP协议
  • IP协议报头
  • 地址管理
  • 网段划分
  • 特殊的IP地址
  • 路由选择
  • 以太网
  • 认识MAC地址
  • 对比理解MAC地址和IP地址
  • DNS(域名服务器)

IP协议

IP协议主要完成的工作是两方面:

  1. 地址管理,使用一套地址体系,来描述互联网上每个设备所处的位置
  2. 路由选择,一个数据包如何从网络中的某个地址传输到另一个地址

在这里插入图片描述
• 主机:配有IP地址,但是不进⾏路由控制的设备;
• 路由器:即配有IP地址,⼜能进⾏路由控制;
• 节点:主机和路由器的统称;

IP协议报头

在这里插入图片描述

  1. 4位版本号(version): 指定IP协议的版本,对于IPv4来说,就是4.对于IPv6来说就是6
  2. 4位头部长度(header length): IP头部的⻓度是多少个32bit,也就是length*4的字节数.4bit表⽰最大的数字是15,因此IP头部最⼤⻓度是60字节.
  3. 8位服务类型(Type Of Service): 3位优先权字段(已经弃⽤),实际上只有四位有效,4位TOS字段,和1位保留字段(必须置为0).4位TOS分别表⽰:最⼩延时,最⼤吞吐量,最⾼可靠性,最⼩成本.这四者相互冲突,只能选择⼀个.对于ssh/telnet这样的应⽤程序,最⼩延时⽐较重要;对于ftp这样的程序,最⼤吞吐量⽐较重要.
  4. 16位总长度(total length): IP数据报整体占多少个字节.包含了报头和载荷,虽然IP自身有长度限制,但是IP也提供了拆包和组包,当载荷很大时,在IP这一层会自动拆成多个IP数据报,每个IP数据报来携带载荷的一部分
  5. 16位标识(id):唯⼀的标识主机发送的报⽂.如果IP报⽂在数据链路层被分片了,那么每⼀个⽚⾥⾯的这个id都是相同的.用于组包。
  6. 3位标志字段:第⼀位保留(保留的意思是现在不⽤,但是还没想好说不定以后要⽤到).第⼆位置为1表⽰禁⽌分片,这时候如果报⽂长度超过MTU,IP模块就会丢弃报⽂.第三位表⽰"更多分片",如果分⽚了的话,最后⼀个分片置为1,其他是0.类似于⼀个结束标记.
  7. 13位分片偏移(framegament offset):是分片相对于原始IP报⽂开始处的偏移.其实就是在表⽰当前分⽚在原报⽂中处在哪个位置.实际偏移的字节数是这个值*8得到的.因此,除了最后⼀个报⽂之外,其他报⽂的长度必须是8的整数倍(否则报⽂就不连续了).描述了这些包之间的先后顺序
  8. 8位⽣存时间(Time To Live,TTL):数据报到达⽬的地的最⼤报⽂跳数.⼀般是64.每次经过⼀个路由,TTL-=1,⼀直减到0还没到达,那么就丢弃了.这个字段主要是⽤来防止出现路由循环
  9. 8位协议:表示在传输层使用哪个协议
  10. 16位头部校验和:使用CRC进⾏校验,来鉴别头部是否损坏.
  11. 32位源地址和32位⽬标地址:表示了发件人地址和收件人地址

地址管理

IP地址的本质就是一个32位整数(int)
为了方便,就会把IP表示成点分十进制的方式
通过3个点分成4个部分,每个部分1个字节,每个部分的取值都是0-255
IP地址的存在,目的就是为了能够区分网络上不同的设备

如何解决IP地址不够用?

  1. 动态分配IP地址
    全世界的设备,也不是同一时刻一起都在上网,更充分的利用现有的IP地址
  2. NAT机制(网络地址映射)
    先把IP地址分成两大类
    a)私网IP(局域网IP):IP地址是以10.* , 172.16.–172.31. ,192.168.* 这三类地址都是私网IP
    b)公网IP:除了私网IP,其他的都是公网IP

公网上的设备对应的公网IP都必须是唯一的,但是私网上/局域网上的设备使用私网IP只要保证局域网内部的IP不重复即可,不同的局域网之间的Ip允许重复

由于上述的设定,就有一个重要的限制:
1.公网设备访问公网设备没有任何问题,直接访问即可
2.局域网设备访问局域网设备(同一局域网中)也是没有任何问题的
3.局域网设备访问局域网设备(不同局域网中)不允许访问
4.局域网设备访问公网设备就需要对局域网设备的IP进行地址转换
5.公网设备访问局域网设备不允许主动访问
在这里插入图片描述
路由器进行NAT的时候就会把这次通信的相关信息记录下来

在这里插入图片描述
3. IPv6从根本上解决问题
增加IP地址的个数
IPv6使用了16个字节表示IP地址

网段划分

IP地址分为两个部分,网络号和主机号

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

在这里插入图片描述
• 不同的子网其实就是把⽹络号相同的主机放到⼀起.
• 如果在子网中新增⼀台主机,则这台主机的网络号和这个子网的网络号⼀致,但是主机号必须不能和子网中的其他主机重复.
通过合理设置主机号和⽹络号,就可以保证在相互连接的⽹络中,每台主机的IP地址都不相同.
那么问题来了,⼿动管理⼦⽹内的IP,是⼀个相当⿇烦的事情.
• 有⼀种技术叫做DHCP,能够⾃动的给⼦⽹内新增主机节点分配IP地址,避免了⼿动管理IP的不便.
• ⼀般的路由器都带有DHCP功能.因此路由器也可以看做⼀个DHCP服务器.

过去曾经提出⼀种划分⽹络号和主机号的⽅案,把所有IP地址分为五类,如下图所⽰。
在这里插入图片描述

• A类0.0.0.0到127.255.255.255
• B类128.0.0.0到191.255.255.255
• C类192.0.0.0到223.255.255.255
• D类224.0.0.0到239.255.255.255
• E类240.0.0.0到247.255.255.255
随着Internet的⻜速发展,这种划分⽅案的局限性很快显现出来,⼤多数组织都申请B类⽹络地址,导致B类地址很快就分配完了,⽽A类却浪费了⼤量地址;
• 例如,申请了⼀个B类地址,理论上⼀个⼦⽹内能允许6万5千多个主机.A类地址的⼦⽹内的主机数更多.
• 然⽽实际⽹络架设中,不会存在⼀个⼦⽹内有这么多的情况.因此⼤量的IP地址都被浪费掉了. 针对这种情况提出了新的划分⽅案,称为CIDR(Classless InterdomainRouting):
• 引⼊⼀个额外的⼦⽹掩码(subnet mask)来区分⽹络号和主机号;
• ⼦⽹掩码也是⼀个32位的正整数. 通常⽤⼀串 “0” 来结尾;
• 将IP地址和⼦⽹掩码进⾏ “按位与” 操作, 得到的结果就是⽹络号;
• ⽹络号和主机号的划分与这个IP地址是A类、B类还是C类⽆关;
在这里插入图片描述
可见,IP地址与子网掩码做与运算可以得到⽹络号,主机号从全0到全1就是⼦⽹的地址范围;
IP地址和⼦⽹掩码还有⼀种更简洁的表⽰⽅法,例如140.252.20.68/24,表⽰IP地址为140.252.20.68,子网掩码的高24位是1,也就是255.255.255.0

特殊的IP地址

• 将IP地址中的主机地址全部设为0,就成为了⽹络号,代表这个局域⽹;
• 将IP地址中的主机地址全部设为1,就成为了⼴播地址, 用于给同⼀个链路中相互连接的所有主机发送数据包;
• 127.*的IP地址⽤于本机环回(loop back)测试,通常是127.0.0.1

路由选择

网络结构太复杂且,每一个路由器都无法掌握全局的信息,只能掌握局部信息,此时路由器规划出来的路线,只能是一个“较优解”路由的过程,是⼀跳⼀跳(Hop by Hop) “问路” 的过程.
所谓 “⼀跳” 就是数据链路层中的⼀个区间. 具体在以太⽹中指从源MAC地址到⽬的MAC地址之间的帧传输区间.
在这里插入图片描述

以太网

• "以太网"不是⼀种具体的网络,而是⼀种技术标准;既包含了数据链路层的内容,也包含了⼀些物理层的内容.例如:规定了⽹络拓扑结构,访问控制⽅式,传输速率等;
• 例如以太⽹中的⽹线必须使⽤双绞线;传输速率有10M,100M,1000M等;
• 以太⽹是当前应⽤最⼴泛的局域⽹技术;和以太⽹并列的还有令牌环⽹,⽆线LAN等;
以太⽹帧格式
以太⽹的帧格式如下所⽰:
在这里插入图片描述
• 源地址和⽬的地址是指网卡的硬件地址(也叫MAC地址), ⻓度是48位,是在⽹卡出⼚时固化的;
• 帧协议类型字段有三种值,分别对应IP、ARP、RARP;
• 帧末尾是CRC校验码。

认识MAC地址

• MAC地址⽤来识别数据链路层中相连的节点;
• ⻓度为48位, 及6个字节. ⼀般⽤16进制数字加上冒号的形式来表⽰(例如: 08:00:27:03:fb:19)
• 在⽹卡出⼚时就确定了, 不能修改. mac地址通常是唯⼀的(虚拟机中的mac地址不是真实的mac地址, 可能会冲突; 也有些⽹卡⽀持⽤⼾配置mac地址).

对比理解MAC地址和IP地址

• IP地址描述的是路途总体的 起点 和 终点;
• MAC地址描述的是路途上的每⼀个区间的起点和终点;

DNS(域名服务器)

使用IP地址来描述网络设备的位置,域名是一串可读性很好的单词,DNS把域名自动的转化成对应的IP地址
TCP/IP中使⽤IP地址和端⼝号来确定⽹络上的⼀台主机的⼀个程序.但是IP地址不⽅便记忆.
于是⼈们发明了⼀种叫主机名的东西,是⼀个字符串,并且使⽤hosts⽂件来描述主机名和IP地址的关系.
在这里插入图片描述
• DNS是应⽤层协议
• DNS底层使⽤UDP进⾏解析
• 浏览器会缓存DNS结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/372335.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Springboot集成Camunda并完成一条流程实例

💖专栏简介 ✔️本专栏将从Camunda(卡蒙达) 7中的关键概念到实现中国式工作流相关功能。 ✔️文章中只包含演示核心代码及测试数据,完整代码可查看作者的开源项目snail-camunda ✔️请给snail-camunda 点颗星吧😘 💖设计流程定…

测试开发体系

软件测试 通过手工或者工具对 “被测对象”进行测试验证实际结果与预期结果之间是否存在差异 软件测试作用 通过测试工作可以发现并修复软件当中存在的缺陷,从而提高用户对产品的使用信心测试可以降低同类型产品开发遇到问题的风险 软件缺陷 软件缺陷被测试工程…

船舶维保管理:Java与SpringBoot的完美结合

✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java实战 |…

Linux openKylin(开放麒麟)系统SSH服务安装配置与公网远程连接

文章目录 前言1. 安装SSH服务2. 本地SSH连接测试3. openKylin安装Cpolar4. 配置 SSH公网地址5. 公网远程SSH连接6. 固定SSH公网地址7. SSH固定地址连接8. 结语 前言 openKylin是中国首个基于Linux 的桌面操作系统开发者平台,通过开放操作系统源代码的方式&#xff…

在工业制造方面,如何更好地实现数字化转型?

实现工业制造的数字化转型涉及利用数字技术来增强流程、提高效率并推动创新。以下是工业制造领域更好实现数字化转型的几个关键步骤: 1.定义明确的目标: 清楚地概述您的数字化转型目标。确定需要改进的领域,例如运营效率、产品质量或供应链…

【vue ezuikit-js】5分钟实现萤石视频放大对焦和缩小对焦

实现功能如上图:点击+按钮,实现画面放大并对焦;点击-,实现画面缩小并对焦。 官网上提供了电子放大的控制按钮和接口,但是只是把当前画面进行放大,并没有对焦,画面模糊。 萤石官方还提供了对焦的接口,根据传入的参数不同,可以实现放大对焦和缩小对焦。但是注意此接口是…

【Matplotlib】figure方法 你真的会了吗!?

🎈个人主页:甜美的江 🎉欢迎 👍点赞✍评论⭐收藏 🤗收录专栏:matplotlib 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进…

mysql项目实战,常用sql语句的实战笔记

1.使用sql语句对数据库进行创建 //创建实验用的数据库 CREATE DATABASE jsschool;//使用当前数据库 USE jsschool;//创建学生表 CREATE TABLE student (sno VARCHAR(20) PRIMARY KEY COMMENT 学生编号,sname VARCHAR(20) NOT NULL COMMENT 学生姓名,ssex VARCHAR(10) NOT NULL…

基于Java超市管理系统设计与实现(源码+部署文档)

博主介绍: ✌至今服务客户已经1000、专注于Java技术领域、项目定制、技术答疑、开发工具、毕业项目实战 ✌ 🍅 文末获取源码联系 🍅 👇🏻 精彩专栏 推荐订阅 👇🏻 不然下次找不到 Java项目精品实…

c++入门学习④——对象的初始化和清理

目录 对象的初始化和清理: why? 如何进行初始化和清理呢? 使用构造函数和析构函数​编辑 构造函数语法: 析构函数语法: 构造函数的分类: 两种分类方式: 三种调用方法: 括号法(默认构造函数调用&…

sql非查询知识点(增删改-crud没有r)

1.建库 create database database_name 2.使用该数据库 use database_name 3.建表 3.1普通建表 create table if not exists actor(actor_id smallint(5) not null primary key comment "主键id",first_name varchar(45) not null comment "名字",last…

Python中的while循环,知其然知其所以然

文章目录 while循环结构1.用循环打印1 ~ 100步骤解析2. 1 ~ 100的累加和3.死循环1. 用死循环的方法实现 1 ~ 100累加和 4. 单向循环(1)打印 一行十个小星星*(2)通过打印一个变量的形式,展现一行十个小星星(3)一行十个换色的星星 ★☆★☆★☆★☆★☆(4)用一个循环,打印十行十列…

重写Sylar基于协程的服务器(7、TcpServer HttpServer的设计与实现)

重写Sylar基于协程的服务器(7、TcpServer & HttpServer的设计与实现) 重写Sylar基于协程的服务器系列: 重写Sylar基于协程的服务器(0、搭建开发环境以及项目框架 || 下载编译简化版Sylar) 重写Sylar基于协程的服务…

『运维备忘录』之 Vim 命令详解

运维人员不仅要熟悉操作系统、服务器、网络等只是,甚至对于开发相关的也要有所了解。很多运维工作者可能一时半会记不住那么多命令、代码、方法、原理或者用法等等。这里我将结合自身工作,持续给大家更新运维工作所需要接触到的知识点,希望大…

杨中科 ASP.NETCORE 高级14 SignalR

1、什么是websocket、SignalR 服务器向客户端发送数据 1、需求:Web聊天;站内沟通。 2、传统HTTP:只能客户端主动发送请求 3、传统方案:长轮询(Long Polling)。缺点是?(1.客户端发送请求后&…

如何使用MCSM搭建我的世界Java版服务器并实现远程联机游戏

文章目录 1. 安装JAVA2. MCSManager安装3.局域网访问MCSM4.创建我的世界服务器5.局域网联机测试6.安装cpolar内网穿透7. 配置公网访问地址8.远程联机测试9. 配置固定远程联机端口地址9.1 保留一个固定tcp地址9.2 配置固定公网TCP地址9.3 使用固定公网地址远程联机 本教程主要介…

1802907-91-0,Methyltetrazine-PEG4-COOH,可以与多种不同的化学基团反应

您好,欢迎来到新研之家 文章关键词:Methyltetrazine-PEG4-COOH,Methyltetrazine-PEG4-acid,甲基四嗪-四聚乙二醇-羧基,甲基四嗪-四聚乙二醇-羧酸,甲基四嗪PEG4羧酸,甲基四嗪-PEG4-羧酸 一、基…

基于Java医院管理系统设计与实现(源码+部署文档)

博主介绍: ✌至今服务客户已经1000、专注于Java技术领域、项目定制、技术答疑、开发工具、毕业项目实战 ✌ 🍅 文末获取源码联系 🍅 👇🏻 精彩专栏 推荐订阅 👇🏻 不然下次找不到 Java项目精品实…

爱快安装和双宽带叠加

文章目录 一、爱快安装二、爱快使用1. 配置WAN12. 配置WAN23. 配置LAN14. 配置DHCP5. DNS设置6. 多线负载7. 基础设置 三、通过交换机拨号1. 交换机设置2. 配置WAN1 一、爱快安装 (1)下载爱快路由ISO版本 爱快路由系统下载 (2)IS…

群晖NAS开启FTP服务结合内网穿透实现公网远程访问本地服务

⛳️ 推荐 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 文章目录 ⛳️ 推荐1. 群晖安装Cpolar2. 创建FTP公网地址3. 开启群晖FTP服务4. 群晖FTP远程连接5. 固定FTP公网地址6. 固定FTP…
最新文章