为什么要学习网络协议
互联网、移动互联网、物联网,都离不开网络协议:
最熟悉的网络协议:HTTP
为了满足各种需求,有各式各样的网络协议(HTTPS、SMTP、MQTT、RTMP等)
网络协议方面的面试题目近年来要求提高了:
TCP和UDP的区别?说一下它们的报文格式?
TCP的流量控制和和拥塞控制?TCP如何实现可靠性传输?
为什么连接是3次握手,关闭是4次挥手?
7层模型与4层模型的区别?每一层的作用是什么?
交换机与路由器的区别?
跨平台的原理(C++)
C++跨平台的原理:使用平台相关的编译器生成对应平台的可执行文件
网络互连模型(OSI参考模型)
什么是协议?为什么要有协议?
协议就是通用的标准。
如果没有一个国际通用的标准,那么各大公司按照自己的标准来,相互之间的交互就会很麻烦。比如我编写的代码在微软的服务器可以运行,但是要在苹果的服务器运行又需要重新编写…
为了更好地促进互联网络的研究和发展,国际标准化组织 ISO在 1985 年制定了网络互连模型OSI 参考模型(Open System Interconnect Reference Model),具有7层结构。
实际上OSI参考模型(7层)更偏理论,而TCP/IP 协议(4层)在才是在实际中使用的协议,而为了研究和学习计算机网络,又常将之划分为5层。
计算机之间的通信基础
1、需要得知对方的IP地址
2、最终是根据MAC地址(网卡地址),输送数据到网卡,被网卡接收
如果网卡发现数据的目标MAC地址是自己,就会将数据传递给上一层进行处理
如果网卡发现数据的目标MAC地址不是自己,就会将数据丢弃,不会传递给上一层
计算机之间的连接方式
网线直连
拓展:由此图可以看出ping走的是ICMP协议。
ARP协议的作用:已知 IP地址,通过广播获取 MAC地址。
为什么右边出现3个ARP包,实际上是一次完整的发送请求,接收响应的过程。
拓展:MAC地址为全F即全1,代表广播,所有机器都可以接收。
同轴电缆(Coaxial)
注意:同轴电缆只要有一个地方线断了,整个线路都瘫痪了。
集线器(Hub)
集线器相比同轴电缆唯一的优点就是:哪怕连着集线器的某一个设备中间线路出问题,不会影响到连着集线器的其他设备。
4.网桥(Bridge)
所谓隔绝冲突域是通过:记录设备的MAC地址在左还是在右。
例如,6向7发数据包,
当6发出请求ARP广播时,网桥会记录6的MAC地址在左;
当7发出响应ARP广播时,网桥会记录7的MAC地址在左。
交换机(Switch)
有记忆功能,可以记住发过的。连接的设备必须在同一网段、同一广播域。
若全球所有设备都用交换机连接:
1、他们必然处于同一网段,因此 IP地址可能会不够用
2、即使使用交换机,第一次发送数据包仍然需要ARP广播,耗费大量时间。
3、形成广播风暴,只要有一个设备发送ARP广播,全球设备都能收到
路由器(Router)
网线直连,同轴电缆,集线器,网桥,交换机
- 连接的设备必须在同一个网段
- 连接的设备处在同一广播域(发出的ARP广播其他机器都可以收到)
广播风暴:当广播数据充斥网络无法处理,并占用大量网络带宽,导致正常业务不能运行,甚至彻底瘫痪
例如全球的计算机通过网桥,集线器,交换机连接,一个发送广播所有计算机都能收到
路由器的作用
- 可以在不同网段之间转发数据
- 隔绝广播域
路由器网关的子网掩码要和连接的主机子网掩码一致,ip地址需要在同一网段
计算机2发送信息给计算机5,需要经过网关,需要输入默认网关,如果不设置网关会跨不了网段
此时计算机2给计算机5发送信息还得需要知道网关的MAC地址,所以第一次发送的信息的时候会发送一次ARP广播来获取网关的MAC地址
此外,Fa1口还需要知道计算机5的MAC地址,所以还需要再进行一次ARP广播
路由器左右两端必须不同网段,如果下图右边计算机1为192.168.1.11,发送信息的时候会发现是在同一网段,会直接发送寻找计算机1MAC地址的ARP广播,而不是去寻找路由器Fa0/0端口的MAC地址
MAC地址
- 每个网卡都有一个6字节(48bit)的MAC地址由组织唯一标识符和网络接口标识符
- 全球唯一,固化在了网卡的ROM中要,由IEEE802标准制定
- OUI—组织唯一标识符,前三个字节,标识厂家
- 后三个字节:网络接口标识符,由厂商自行分配
- 当48位全为1时,代表广播地址
- MAC地址操作
- 查看MAC地址: ipconfig /all
- 修改MAC地址:更改适配器选项 - 属性 -配置 - 高级 - 网络地址
- 填写的时候需要把减号去掉
- 有时候可以通过修改MAC地址蹭网
MAC地址的获取
当不知道对方主机的MAC地址时需要通过ARP广播获取对方MAC地址
获取成功后会缓存IP地址,MAC地址的映射信息,俗称:ARP缓存
通过ARP广播获取的MAC地址属于动态(dynamic)缓存
存储时间默认两分钟,过期就删除
IP地址
IP地址:互联网上的每一个主机都有一个IP地址
最初是IPv4版本,32bit(4字节),2019.11.25,全球的IP地址已经用完
IP地址的组成
IP地址由两部分组成:网络标识(网络ID),主机标识(主机ID)
同一网段的计算机,网络ID相同
通过子网掩码,可以计算出网络ID:子网掩码&IP地址
例如ip是192.168.1.10 子网掩码是255.255.255.0 进行按位与操作
IP地址:1100 0000.1010 1000.0000 0001.0000.1010
&
子网掩码:1111 1111.1111 1111.1111 1111.0000 0000
结果:1100 0000.1010 1000.0000 0001.0000 0000 即192.168.1.0 这就是网段
IP地址+子网掩码才能看出网段是什么,才能看出网络ID和主机ID
例如IP地址:130.168.1.10 子网掩码:255.255.0.0 网段是130.168.0.0 这样就是130.168是网络ID,0.0是主机ID
这样这个网段就可以有256*256-2个ip,减去130.168.0.0和130.168.255.255 全0和全1不能使用
计算机和计算机通信前,会先判断目标主机和自己是否在同一网段
IP地址的分类
A类:默认子网掩码是255.0.0.0 网络ID8位,0开头 例如0111 0000,不能以1开头
B类:默认子网掩码是255.255.0.0 网络ID16位,10开头
C类:默认子网掩码是255.255.255.0 网络ID24位,110开头
D类:以1110开头,多播地址
E类地址:1111开头,保留为今后使用
只有ABC类地址才能分配给主机
主机标识全为0,标识主机所在的网段
A类地址:
必须以0开头,后面七位的范围是0-127,网络ID的范围就是0-127 主机ID每个部分都是0-255
0不能用,127作为保留网段,其中127.0.0.1是本地环回地址,代表本机地址,不存在一个网络ID是0,全1也不行
第一部分的取值范围是1-126 第2,3,4部分的取值范围是255
每个A类网络能容纳的最大主机数是:256256256-2-2=2的24次-2 其中xxx.0.0.0和xxx.255.255.255不能使用
B类地址:
必须是10开头,第一部分的取值范围是128-191,第二部分的取值范围是0-255 网络ID的取值范围是128.0-191.255
主机ID:第三四部分的取值范围是0-255
每个B类网络能容纳的最大主机数是:256*256-2
C类地址:
网络ID:第一部分的取值范围是192-223 第二三部分的取值范围是0-255
主机ID:第4部分的取值范围是0-255 每个C类网络能容纳的最大主机数是256-2
D,E类地址
D类地址:没有子网掩码,用于多播地址
第一部分取值范围是:224-239
E类地址:保留为今后使用
第一部分的取值范围是:
子网掩码的CIDR表示方法
192.168.1.1100/24 代表子网掩码有24个1 也就是255.255.255.0
123.210.100.200/16 代表子网掩码有16个1,也就是255.255.0.0
为什么要进行子网划分?
如果需要在200台主机在同一个网段内,可以分配一个C类网段,比如192.168.1.0/24
共254个可用ip,多出54个空闲,不算浪费资源
如果需要让500台计算机在同一个网段,可以分配一个B类网段,比如191.100.0.0/16
一共65534个可用IP地址 191.100.0.1-191.100.255.254
多出65034个空闲的IP地址,属于极大的浪费资源
子网划分
子网划分:借用主机位作子网位,划分出多个子网
可分为等长子网划分和变长子网划分
等长子网划分:一个网段分成多个子网,每个子网的可用IP地址数量是一样的
变长子网划分:每个子网的可用ip地址数可用是不一样的
如上图,子网掩码从24个1变成25个1 本来有一个C类网段,192.168.0.0/24 这时候网络ID变成了25位,主机位是7位
这样就产生出了两个新的子网段,192.168.0.0/25 和192.168.0.128/25
A子网:192.168.0.0/25 子网掩码:255.255.255.128
192.168.0.1-192.168.0.126
B子网:192.168.0.128/25 子网掩码:255.255.255.128
192.168.0.129-192.168.0.254
超网&静态路由
Q:192.168.0.10/24和192.168.10.10/16两台设备之间连接能正常通信吗
A:网段不同,前者是192.168.0.0后者是192.168.10.0,不能正常通信
计算机0和计算机1通信时,计算机0只知道计算机1的ip地址,不知道计算机1的子网掩码,所以计算机0如果要发消息给计算机1时,是使用计算机0的子网掩码和计算机1的IP进行按位与操作
通信需要双方都可以给对方发消息,虽然计算机1可以给计算机0发消息,但是计算机0没法给计算机1发消息
超网
超网:跟子网反过来,他是将多个连续的网段合并成一个更大的网段
需求:原本200台计算机使用192.168.0.0/24网段,现在希望增加200台设备到同一个网段
合并网段的条件:必须是连续的,比如192.168.0.0和192.168.1.0反之,192.168.0.0和192.168.2.0不能合并
Q:192.168.1.0和192.168.2.0可以通过向左移动1位子网掩码进行合并吗?
规律:如果第一个网段的网络号能被n整除,那么由他开始连续的n个网段,能通过左移k位子网掩码进行合并
比如第一个网段的网络号以二进制00结尾,那么由他开始的连续四个网段,可以通过左移2位子网掩码进行合并
合并两个网段
例如200台在192.168.0.0/24网段,200台在192.168.1.0/24 合并192.168.0.0/24,和192.168.1.0/24为一个网段 :192.168.0.0/23(子网掩码向左移动一位)
子网掩码往右是划分子网,往左是划分超网,大概都是两倍的关系
思考:192.168.0.255/23这个IP地址可以给计算机使用吗
解:子网掩码23位,主机位有9位,如果只是255,不是全为1,而是011111111
意味着这不是广播地址,如果是192.168.1.255/23这个IP则不能给计算机使用,这个是当前网段的广播IP地址
合并4个网段
将192.168.0.0/24 192.168.0.1/24 192.168.0.2/24 192.168.0.3/24合并为192.168.0.0/22网段
判断一个网段是子网还是超网
- 首先判断网段的类型,是A类还是B类还是C类
- 看子网掩码是在默认之网掩码变多还是变少
- 比如c类网段,子网掩码默认24位,如果子网掩码小于24,则是超网,大于24是子网
路由
在不同网段之间转发数据需要路由器支持
默认情况下,路由器只知道跟他直连的网段,非直连的网段需要通过静态路由,动态路由告诉他
静态路由:管理员手动添加路由信息,适用于小规模网络
动态路由:路由器通过路由选择协议(比如RIP,OSPF)自动获取路由器信息,适用于大规模网络
四个角一共四个不同的网段,路由器0两个网关都对应两个网段,192.168.1.1/24和192.168.1.10/24在同一网段
如果路由器0要给路由器1发信息,路由器1是路由器0的下一跳,并且添加路由的时候网络和掩码填写需要通信的机子的网段
比如计算机0要给计算机2发信息,添加静态路由时的网络和掩码填写193.168.2.0和255.255.255.0
并且路由器0和路由器1的两个Serial2/0口必须配置并且在同一网段
局域网&NAT
网络,互联网,因特网
网络:将多台计算机连接起来
互联网:用路由器把许多网络连接起来
全世界最大的互联网:因特网
ISP:因特网服务提供商,比如移动,电信,联通,铁通等
网络分类
按照网络的范围可以分为局域网,城域网,广域网
局域网(LAN):一般是范围几百米到十几公里内的计算机构成的网络,使用最广泛的网网络技术叫以太网
在电脑,手机上的WLAN—无限局域网
城域网(MAN)数十公里到数百公里
广域网(WAN),可以覆盖一个国家,通常需要租用ISP的线路
常见的几种接口
FastEthernet:快速以太网接口(100M)
GigabitEthernet:千兆以太网接口
Serial:串口
上网方式 — 电话线入户
广域网口WAN连接猫 电脑连接LAN口 电话线扣连接电话线
这就是平时说的:ADSL电话拨号上网
非对称数字用户线路,提供上下行不对称的传输宽带
猫(Moden):调制解调器,进行数字信号和模拟信号的转换
电话线传播的是模拟信号,计算机中是数字信号
上网方式 — 光纤入户
WAN连接光猫 LAN连接计算机
光猫(Optical Modem) 光调制解调器,进行光信号和数字信号的转换
上网方式 — 网线入户
家用无限路由器的逻辑结构
公网IP,私网IP
IP地址分为:公网IP,私网IP
公网IP:Internet上的路由器只有到达公网的路由表,没有到达私网的路由表
私网IP:主要用于局域网,下面是保留的私网网段
A类:10.0.0.0/8 1个A类网络
B类:172.16.0.0/16 - 172.31.0.0/16 16个B类网络
C类: 192.168.0.0/24 - 192.168.255.0/24 256个C类网络
NAT技术(Network Address Translation)
局域网内不论哪一台设备,发请求道到外网,要经过路由器,路由器会经过NAT转换,把IP地址换成公网IP地址
如上内网中是192.168.1.10的机子经过NAT转换假设变成了201.0.0.11,然后之后发送请求给200.0.0.10是以201.0.0.11的地址发送,返回也一样
NAT的特点
- 可以节约公网IP资源
- 会隐藏内部真实IP
NAT的分类
静态转换:手动配置NAT映射表 (设置某个私网IP映射成某个公网ip) 一对一转换
动态转换:定义外部地址池,动态随机转换,一对一转换
PAT(Port Address Translation)
多对一转换,最大程度节约公网IP资源
采用端口多路复用,通过端口号表示不同的数据流
网络分层
TCP/IP协议模型
分为应用层,运输层,网际层,网络接口层
学习上把网络接口层分出物理层和数据链路层
物理层
物理层定义了接口标准,线缆标准,传输速率,传输方式等
模拟信号
连续的信号,适合长距离传输
抗干扰能力差,收到干扰时波形变形很难纠正
数字信号
离散的信号,不适合长距离传输
抗干扰能力强,收到干扰波形失真可以修复
网线不能超过一百米,所以广域网使用电话线/光纤来进行远距离传输
信道
信道—信息传输的通道,一条传输介质(比如网线)上可以有很多信道
从右往左和从左往右是两条不同的信道
单工通信:信号只能往一个方向传输,任何时候都不能改变信号的传输方向
比如:无线电广播,有线电视广播
半双工通信:信号可以双向传输,必须交替进行,同一时间只能一个方向
比如对讲机
全双工通信:信号可以同时双向传输
比如手机(打电话,听说同时进行)
数据链路层
链路:从一个节点到相邻节点的一段物理线路,中间没有其他交换节点(比如交换机)
路由器0和路由器1之间是一个链路 路由器1和路由器2之间也是个链路
交换机0和计算机1之间也是一个链路 路由器2和交换机0也是个链路
计算机0和路由器0之间是一个链路,集线器相当于网线
数据链路:在一条链路上传输数据时,需要有对应的通信协议来控制数据的传输
不同类型的数据链路,所用的通信协议可能是不同的
广播信道:CSMA/CD协议(比如同轴电缆,集线器等组成的网络)
点对点信道:PPP协议(比如两个路由器之间的信道)
数据链路层的三个基本问题:封装成帧,透明传输,差错校验
封装成帧
把网络层的数据表进行封装,数据包变成帧的数据部分
最大传输单元MTU
每一种数据链路层协议都规定了所能传送帧的数据长度上线
以太网的MTU为1500个字节
透明传输
如果原始数据中包含帧开始符合帧结束符,要先进行转义
差错检验
FCS根据数据部分和链路层首部计算出一个值,会和FCS进行比较
如果计算出的数值和FCS不一样,数据会被丢弃
CSMA/CD协议
载波侦听多路访问/冲突检测
使用了CSMA/CD协议的网络可以称为以太网,传输的是以太网帧
以太网帧有Ethernet V2标准,IEEE的802.3标准,主要是Ethernet V2标准
为了能够检测正在发送的帧是否产生了冲突,以太网的帧至少要64字节
用交换机组件的网络,已经支持全双工通信,不需要使用CSMA/CD,传输的帧依然是以太网帧
Ethernet V2帧的格式
PPP协议
网卡
工作在数据链路层和物理层
网卡接受到一个帧,首先进行差错校验,如果校验通过则接收,否则丢弃
wireshark抓到的帧没有FCS,因为他抓到的是差错校验的帧/FCS会直接丢弃
网络层
网络层数据包(IP数据包,Packet)由首部,数据2部分组成
首部检验和
把首部的数据根据一定的算法算出来的值给首部检验和
传输层
两个协议:TCP和UDP协议
UDP-数据格式U
TCP请求
首部长度20-60
可靠传输
流量控制
拥塞控制
文章来源:LemonSec网络安全的定义什么是网络安全?1、国际化标准组织(ISO)引用ISO-74982文献中对安全的定义:安全就是最大程度地减少数据和资源被攻击的可能性。2、《计算机信息安全系统保护条例》中的第三条规范了包括计算机网络系统在内的计算机信息系…
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论