IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 网络协议二 -> 正文阅读

[系统运维]网络协议二

目录

IP

网段划分

路由

数据链路层

ARP协议

NAT技术

代理服务器


IP

ip = 网络号 + 主机号

例如:们要去北京旅游,我们要先到北京车站或机场,然后再坐其它交通工具去具体景点,而网络

号可以帮助我们找到车站或机场,主机号则能帮助我们找到具体的景点位置

tcp与ip

tcp负责解决决策问题,ip负责解决执行问题

ip提供了一种能力,较大概率将数据从A主机跨网络传送给主机B的能力!

例如:你们学校有一次考试,所有人都没有考到满分,而你是非常有实力的,即有较大概率能考到

满分,而你老爹在你们学校权力很大,所以可以让你重考多次,你觉得太吵,你老爹给你单独安排

一个空教室让你考试,而你只需负责考试考到满分就行!这就是你爹在做决策,而你在做执行!

ip报头

4位首部长度和tcp是一样的,报头标准长度都是20字节,所以一般是填的值也为5,只是在细节上

有所不同,所以如何分离与装与tcp做法没有区别!

如何分用(向上交付)

ip通过16位总长度,来解决自身的粘包问题,将一个完整的报文交给上层,8位协议则是由哪个填

的,就交给谁,udp填的,就交给udp,tcp填的,就交给tcp!

4位版本号(version): 指定IP协议的版本,对于IPv4来说,就是4!

8位服务类型(Type Of Service): 3位优先权字段(已经弃用),4位TOS字段,和1位保留字段(必须置

为0),4位TOS分别表示: 最小延时,最大吞吐量,最高可靠性,最小成本,这四者相互冲突,只

能选择一个!

16位校验和

保证报文的字段和数据正确!

8位生存时间

例如:假如你写的一段程序有bug,那数据包就可能游离在网络中,每跳一圈,就会消耗一点资

源,所以就有了8位生存时间,让它有一定的生命周期,每跳一次,就--,减到为0时,就被丢弃!

分片

为什么要分片?

因为数据链路层一次可以往网络里发送的数据大小是有限的,即MTU:1500字节!如同寄快递

时,你的包裹太大或太重的时候,就会分为几个包裹发

为什么要在网络层里进行分片?

因为分片后的每个报文,都要在网络中流通,所以都要携带ip的,才能知道发去哪儿!而在现实生

活中,假设寄的是电脑,每个包裹都要贴同样的目的地以及电话等,同时,这个拆分也必须自己

拆,要不然快递公司东西拆了,最后无法组装好,就成了快递公司的责任了!

组合则由对端的网络层IP协议来做

如何分片?

如下图,3400是传输层给网络层的报文大小,而拆分的每个报文都必须有报头

注意:分片的过程传输层不知道,也不需要知道!

传输层知道了怎么办?

如下图,是3个包裹,如果丢失了一个包裹,本来给传输层的是3400,却变成了2960,那传输层只

能将剩下的两个报文丢弃,然后重新再发!所以分片会提高我们丢包的风险!!!

注意:ip分片不是大部分情况!!!

如果不想分片,则传输层说了算,因为它是负责决策的!通过与对端的传输层协商单个报文的大

小,而对于udp,则需要分片时,只能分片!

一般而言,我们为了减少分片,一般是要tcp控制自己的单个报文的大小的!

16位标识

没有分片,不同报文,标识符是不一样的,如果分片,标识符是一样的!这样能让同一个报文的不

同部分聚合在一起!!!

13位片偏移

报文的有效载荷,在原始报文的有效载荷中的偏移量!

如何组合?

按照13片位偏移,将聚在一起的报文,按升序排序即可!

如何知道,报文有没有丢失?

如果是头部丢了,那组合后的报文,头部的13位片偏移就不会为0

如果是中间部分丢了,遍历组合后的报文,如果当前报文的13位偏移加上自身的有效载荷不等于下

一个报文的13位片偏移,那就知道这两者中间的报文丢了!

如果是尾部丢了呢?

就用到了3位标志了,3位标志:1位保留,1位表示禁止分片,1位表示更多报文,为1:后面还有

报文了,为0:后面没有报文了!

如果最后一个报文的"更多报文"为1,就表示尾部丢了,否则就没有丢!

接收端如何得知报文是独立的,还是一个分片?

通过更多分片和片偏移可以判断,如下图

网段划分

网络号: 保证相互连接的两个网段具有不同的标识

主机号: 同一网段内, 主机之间具有相同的网络号, 但是必须有不同的主机号

DHCP:能够自动的给子网内新增主机节点分配IP地址, 避免了手动管理IP的不便

路由器都带有DHCP功能,而你在连接WiFi输入密码时,就是在与路由器交流!

查找的本质,其实是排除!!!

如下图,计算机系1班2号学生捡到了一个钱包,而它不认识这个人,就在群里@计算机院学生会主

席,让它找一下这个人,计算机院主席只知道这个人不是自己院的,所以就在群里@校学生会主??

席,而校学生会主席知道这个人是经管院的,就在群里@经管院的主席,然后经管院的主席就在群

里@李四,李四一看到消息,就打电话找到捡到钱包的人,拿回钱包!

在查找的路上的时候,只关心前面的学院和专业,当到达目标群(经管院),才关心后面的班级个人

信息!即在查找的时候,是通过划分不同的群,来进行查找的,本质就是一次可以排除1个或多个

群!!!

网络划分本质,是为了提高查找效率,减少查找的难度,便于组网!!!

对于全球,就分为了下面五类,不同国家根据需求,来申请响应的类,像中国,印度这样人口多的

国家就可以申请A类,而像日本,英国则可以申请B类

局限性:例如大多数组织都申请B类网络地址, 导致B类地址很快就分配完了, 而A类却浪费了大量

地址,因为A类主机号很多,但实际拥有的主机数量和可以用的ip地址的数量相差很大,就会导致

ip地址大量的浪费!

为了解决上面方案的局限性,所以提出了新的划分方案, 称为CIDR,引入一个额外的子网掩码来区

分网络号和主机号,如下图,以B类网络为例,将主机号最左边一位不用,子网掩码这一位(包括自

身这一位)左边全部为1,右边全部为0,然后与ip地址按位与,为1则拿去当ip地址使用,为0则去

组件新的子网!

网络号 = ip地址 & 子网掩码,如下图:

ip地址的数量限制

IP地址(IPv4)是一个4字节32位的正整数. 那么一共只有2的32次方 个IP地址, 大概是43亿左右,?而

TCP/IP协议规定, 每个主机都需要有一个IP地址,CIDR在一定程度上缓解了IP地址不够用的问题!

三种方式解决:

1、动态分配IP地址: 只给接入网络的设备分配IP地址

2、NAT技术

3、IPv6,与IPv4互不相干,彼此并不兼容,?IPv6用16字节128位来表示一个IP地址,还没普及

私有IP地址和公网IP地址

如果一个组织内部组建局域网,IP地址只用于局域网内的通信,而不直接连到Internet上,理论上 使用

任意的IP地址都可以,但是RFC 1918规定了用于组建局域网的私有IP地址

10.*,前8位是网络号,共16,777,216个地址

172.16.到172.31.,前12位是网络号,共1,048,576个地址

192.168.*,前16位是网络号,共65,536个地址

包含在这个范围中的, 都成为私有IP, 其余的则称为全局IP(或公网IP)

私有IP地址是可以重复的,例如:李四和王五分别连接自己家的网络,ip地址是可以相同的,因为

两人所用的是不同的局域网

路由

路由的过程,就是这样一跳一跳?"问路" 的过程

路由表的Destination是目的网络地址,Genmask是子网掩码,Gateway是下一跳地址,Iface是

发送接口,Flags中的U标志表示此条目有效(可以禁用某些条目),G标志表示此条目的下一跳地址

是某个路由器的地址,没有G标志的条目表示目的网络地址是与本机接口直接相连的网络,不必经

路由器转发

当到达某个节点时,会拿目的ip与当前节点的路由表中的第二行的子网掩码开始按位与,如果符合

就从ech0接口发送出去,每一行都不符合就发到default路由器,再根据它的路由表决定下一跳地

址!

IP最大的意义,在于路径选择!!!

为什么要把数据包由F->G?

是由目的ip决定的!路由查找完成

如何把数据包由F->G?

由数据链路层来解决!?

凡是能够跳转到下一跳,一定是直接相连的节点!而直接相连的节点,一定是在同一个局域网中!

所以数据包从一节点到另一节点的问题,就成了局域网通信的问题!而同一局域网,两个节点是能

够直接通信的!用以太网或令牌环网来完成!

数据链路层

"以太网" 不是一种具体的网络,而是一种技术标准,既包含了数据链路层的内容,也包含了一些

物理层的内容,例如: 规定了网络拓扑结构,访问控制方式,传输速率等,和以太网并列的还有令

牌环网, 无线LAN等

源地址和目的地址是指网卡的硬件地址(也叫MAC地址),长度是48位,是在网卡出厂时固化的?

帧协议类型字段有三种值,分别对应IP、ARP、RARP

帧末尾是CRC校验码?

如何分离报头和有效载荷(封装)?

通过去掉定长的报头,以及CRC,封装则添加!

如何决定将自己的有效载荷交付给上一层?

通过报头中的类型来决定交给哪一个帧协议类型字段!

如下图,就是一个Mac地址!mac地址通常是唯一的,虚拟机中的mac地址不是真实的mac地址,

可能会冲突;也有些网卡支持用户配置Mac地址

在一个局域网内,一个报文会逐一去查找节点,每经过一节点,就会与该节点的网络协议栈的数据

链路层对比,不符合的话就会被节点弃,符合的话就会解包,重新封装,然后前往另一个局域

对比IP与Mac

IP地址描述的是路途总体的 起点 和 终点

MAC地址描述的是路途上的每一个区间的起点和终点

认识MTU

最大值1500称为以太网的最大传输单元(MTU),不同的网络类型有不同的MTU

不同的数据链路层标准的MTU是不同的

TCP的单个数据报的最大消息长度,称为MSS,在建立连接的时候,双方会进行MSS协商,双方

发送SYN的时候会在TCP头部写入自己能支持的MSS值,会选择两者较小的MSS作为最终MSS

MSS的值就是在TCP首部的40字节变长选项中(kind=2)

ARP协议

数据包首先是被网卡接收到再去处理上层协议的,如果接收到的数据包的硬件地址与本机不符,则

接丢弃!!!

源主机如何知道局域网中的目标主机的Mac地址?即需要有在一个局域网发现指定一台主机Mac

地址的能力!所以就有了ARP协议!

每台主机都维护一个ARP缓存表,可以用arp -a命令查看。缓存表中的表项有过期时间(一般为20

钟),如果20分钟内没有再次使用某个表项,则该表项失效,下次还要发ARP请求来获得目的主

机的硬件地址

ARP数据包的格式

硬件类型指链路层网络类型,1为以太网

协议类型指要转换的地址类型,0x0800为IP地址

硬件地址长度对于以太网地址为6字节

协议地址长度对于和IP地址为4字节

op字段为1表示ARP请求,op字段为2表示ARP应答

ARP工作流程

虽然源主机不知道目标主机的Mac地址,但知道它的ip地址!所以源主机可以发起ARP请求,询问

ip地址为目标主机的ip地址的Mac地址,并在局域网内广播!目标主机收到ARP请求,发现与本机

相符合,就会回复一个ARP应答,将自己的Mac地址放入其中!!!

如下图,就是ARP协议的一个工作流程,FFF...表示广播!

任何局域网中的主机,可能向别人发起ARP,也可能被别人发起ARP,即主机可能收到的是ARP

请求,也可能是ARP应答,所以收到之后首先看的就是op,判断是哪一种!!!

DNS

DNS是一整套从域名映射到IP的系统

域名简介

例如:www.baidu.com

com: 一级域名,表示这是一个企业域名,同级的还有 "net"(网络提供商),"org"(非盈利组织) 等

baidu: 二级域名, 公司名

ww: 只是一种习惯用法

ICMP协议

ICMP协议是一个网络层协议,基于IP协议工作的,但是它并不是传输层的功能

ICMP只能搭配IPv4使用. 如果是IPv6的情况下, 需要是用ICMPv6

主要功能

确认IP包是否成功到达目标地址

通知在发送过程中IP包被丢弃的原因

ping命令

ping 的是域名,而不是url! 一个域名可以通过DNS解析成IP地址

ping命令不光能验证网络的连通性,同时也会统计响应时间和TTL(IP包中的Time To Live,生存

周期)

ping命令基于ICMP,是在网络层,而端口号,是传输层的内容

NAT技术

NAT技术当前解决IP地址不够用的主要手段,是路由器的一个重要功能,是一种能将私有IP和全局

IP相互转化的技术方法,对于服务器返回的数据中,目的IP都是相同的,所以使用IP+port来建立

这个关联关系,如下图

这种关联关系也是由NAT路由器自动维护的。例如在TCP的情况下,建立连接时,就会生成这个表

项;在断开连接后,就会删除这个表项

NAT技术的缺陷

无法从NAT外部向内部服务器建立连接

装换表的生成和销毁都需要额外开销

通信过程中一旦NAT设备异常, 即使存在热备, 所有的TCP连接也都会断开

代理服务器

如下图,代理服务器的作用有三点

1、身份认证

2、加速内网服务

3、可以对访问内网的请求进行筛查

如下图,代理服务器不做业务处理,仅仅做业务转发,根据后端每台机器的负载清空,进行业务转

发,较为均衡的将请求打散到每台主机上——负载均衡,同时也是为了安全!

NAT与代理服务器的区别

从应用上讲,NAT设备是网络基础设备之一,解决的是IP不足的问题;代理服务器则是更贴近具体

用,比如迅雷这样的加速器

从底层实现上讲,NAT是工作在网络层,直接对IP地址进行替换,代理服务器往往工作在应用层

从使用范围上讲,NAT一般在局域网的出口部署,代理服务器可以在局域网做,也可以在广域网

做, 也可以跨网

从部署位置上看,NAT一般集成在防火墙,路由器等硬件设备上,代理服务器则是一个软件程

序,?需要部署在服务器上

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-11-05 00:57:57  更:2022-11-05 01:00:43 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 19:24:32-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码