如何将两个电脑连起来
通过网线,网卡
网线不够长,数据丢失
中继器
能够对信息进行中继,实现设备的放大,集线器,多口中继器,能够对信息进行中继和放大,会往其他所有接口泛洪,无法对终端主机进行隔离多个主机处于同一个**冲突域**中,采用集线器的网络,带宽利用率较低。
网桥
链路层产品,能够记录终端至极mac地址能够进行冲突域隔离,提高网络带宽利用率,不同接口之间数据不会互相冲突,
接口有限,默认是两个接口,
交换机
①交换机(Switch)是一种链路层产品,能够记录终端主机的MAC地址并生成MAC表(也称为CAM表),MAC表相当于“地图”,交换机根据MAC表转发主机之间的数据流。
②交换机是在网桥的基础上进行延伸和升级,相比网桥,主要有几个优势:接口数量更加密集(每个主机在独立的冲突域,带宽利用率大大提高)采用专用ASIC硬件芯片进行高速转发能够进行VLAN隔离(不仅仅可以隔离冲突域,而且通过VLAN隔离广播域)
③交换机是一种局域网产品(历史上有很多局域网技术,目前是以太网技术称霸),一般用于本地网络,无法实现远程广域网通信。
路由器
采用路由表实现数据转发
路由器主要用于连接不同局域网(可以是不同介质,如令牌网和以太网可以互通),实现广播域隔离,也可以用于远程通信(广域网连接)
跨介质跨地理的网络大融合成为现实
IP协议等逻辑寻址机制是实现不同类型局域网连通的关键
路由器在实现局域网之间通信时,会进行“介质翻转”和“路由转发”
无线AC/AP
无线AP(Access point)可以看成带有无线功能的交换机/路由器,随着无线城市、移动办公趋势,网络中无线产品的比例越来越多
胖AP,瘦AP,小型的无线网络(家用、小型企业)用胖AP即可解决,大型无线网络(无线城市、无线校园网)则需要用瘦AP方案)(AC+AP)来解决
防火墙
防火墙(Firewall)是一种网络安全产品,用于对网络进行安全访问限制,一般用在互联网边缘,防止外部黑客攻击。
根据防火墙的技术特征,可以分为包过滤、应用代理、状态检测防火墙;根据产品形态,可以分为软件和硬件防火墙。
可以看到例如路由协议、访问控制列表、地址翻转技术
是否有了防火墙,就可以不用路由器了呢?网络边界的路由器是可以直接代替为防火墙,但是防火墙和路由器可以在网络里面同时存在,例如将防火墙放在路由器之前或者之后都可以,这样的话,路由器侧重地址翻转和路由策略,防火墙侧重安全隔离等功能。
流控
网络中的流控(流量控制)产品主要分为上网行为管理、负载均衡器/应用交付、链路优化等
行为管理产品主要针对流量进行精细化区分控制;负载均衡/应用交付侧重流量的负载均衡(根据流量的特征、应用、地址等进行区分,然后分发到不同的链路和服务器上);链路优化主要应用在广域网等低速链路边界,最大化利用链路
家庭网络
小型创业公司网络
园区网
政务网
数据中心
电信网
TCP/IP协议
概述
现在电脑都是安装TCP/IP栈通信
协议栈
OSI模型是一个理论框架,而TCP/IP协议栈是一个事实标准。
应用层:为用户提供软件接口,协议,HHTP,HTTPS,BT/P2P/QICQ
传输层,作用,用于实现数据可靠传输和不可靠传输,协议,TCP/UDP
网络层,提供IP地址和三层通信(路由器)功能,IP协议
链路层,提供MAC地址和二层通信(交换机)功能。Ethernet
封装和解封装
数据封装是一个为数据包加入寻地址信息的过程
端口号用于标志不同的应用程序,面向最终用户
ip地址用于标志通信设备,面向路由器
mac地址用于标志唯一的局域网设备面向交换机
Etherpnet协议
以太网协议,用于实现链路层的数据传输和地址封装
三个协议字段
Destination 目的字段,表示通信方的mac地址
souce源字段,标识发送端的mac地址
type,类型值,标志上层的协议
mac地址(网卡)
mac地址唯一的
mac16进制的
前半段是OUI代码,表示厂商,思科华为三星。。。
IP协议
1.任何能联网的设备都有唯一IP地址
2.IP可以被追踪
原理
通过IP协议栈实现网络通信,面向无连接和不可靠的传输功能
通信过程
①PC1在请求数据包里面封装源目IP地址,并将带有IP地址的数据包发送到互联网;
②互联网有大量的网络通信设备(例如路由器),路由器根据数据包的IP地址查找路由表(地图),然后以接力棒的 方式逐跳转发直到目标服务器;
③服务器收到请求数据后,将源目IP地址翻转,并封装回应数据包发送到互联网。
模拟快递员收寄件
快递收寄件:
①寄快递的时候,需要先写快递单,快递单要求写入寄件方和收件方的姓名和联系信息(电话号码、地址),写完之后,再将快递单贴在包裹上面。
②物流公司(或快递员)根据包裹的寄件地址,通过物流平台(飞机、长途货车、卡车)将包裹在省市中传输,直到收件方的城市。
③收快递的时候,快递员根据包裹收件地址,找到对应的街道或小区,然后通过电话联系并交付到我们手里。
总结:快递单相当于IP地址、快递包裹相当于数据包,物流公司/快递员相当于路由器/交换机。
实践内容
打开wireshark软件实现抓包
命令:ping 8.8.8.8
抓包
ip协议字段解读
【IP协议字段解读】
Version(版本号):标识IP协议的版本,目前V4版本地址已经枯竭,V6慢慢成为主流。
Header Length(头部长度):默认为20字节,最大为60字节。
Differentiated Services Field (服务区分符):用于为不同的IP数据包定义不同的服务质量,一般应用在QoS技术中。
Total Length (总长度):标识IP头部加上上层数据的数据包大小,IP包总长度最大为65535个字节。
Identification (标识符):用来实现IP分片的重组,标识分片属于哪个进程,不同进程通过不同ID区分。
Flags(标志符):用来确认是否还有IP分片或是否能执行分片。
Fragment offset (分片偏移量):用于标识IP分片的位置,实现IP分片的重组。
Time to live (生存时间):标识IP数据包还能生存多久,根据操作系统不同,TTL默认值不同,每经过一个三层设备如路由器的处理,则TTL减去1,当TTL=0时,则此数据包被丢弃。
Protocol (协议号):标识IP协议上层应用。当上层协议为ICMP时,协议号为1,TCP协议号为6,UDP的协议号为17。
Header checksum (头部校验):用于检验IP数据包是否完整或被修改,若校验失败则丢弃数据包。
Source(源IP地址):标识发送者IP地址,占用32bit。
Destination (目的IP地址):标识接收者IP地址,占用32bit。
我们可以看到IP头部默认有12个字段(后续会提到特殊字段),为了方便记忆,可以总结为7个核心知识点:
a.Source和Destination即IP源目地址字段,是IP协议最核心的字段;
b.Id+Flags+FO三个字段可以实现IP数据分片和重组;
c.Total Length和Header Length标记IP头部和上层数据的边界;
d.TTL生存时间字段可以实现通信防环;
e.DSCP服务区分符可以实现流量控制;
f.Checksum字段可以数据包完整性校验;
g.Protocol字段标记上层应用;
源目IP字段上面已经讲过,下面我们来对其他字段进行解读=>
TTL生存字段解读
TTL(Time to live)即生存时间,用于标识IP数据包"还能存活多久",这个生存值在发送方发送数据时便设置好了。不同电脑/操作系统的初始TTL是不同的,例如上图,便是我的Mac电脑发出的,默认值是64,其他一些系统是128或255。由于TTL值占用8个bit位,所以最大值是255(二进制11111111)。IP数据包每经过一个路由器或三层设备,TTL便会被减去1,而当TTL=0的时候,则代表此数据包"死亡",此时路由器便会向源发送者返回一个"TTL Exceed"的ICMP报错包。上图中,如果我的电脑到目标服务器超过了64跳,则这个数据包会中途被丢弃,无法到达目标地。
TTL值除了标识IP数据包的生存值之外,另外一个特别重要的功能便是"防止数据包环路",简称为"防环"。很多时候,由于工程师的疏忽,或者网络拓扑结构的复杂性,会出现一些有bug的网络环境,例如=>
上面便是一个经典的"环路拓扑",当电脑将数据包发送到互联网时,由于网络设备之间存在环路(Loop),所以数据包一直在里面绕起来,而不是发送到最右边的服务器。如果没有TTL,则这个数据包会一直存在于链路中,这样不仅占用网络带宽,并且浪费设备的处理器资源。若有大量的数据包存在网络中,则会拖垮其他人的正常通信。
DSCP字段解读
DSCP(Differentiated Services Field) 即服务区分符,用于为不同的IP数据包定义不同的服务质量。DSCP的前身叫做TOS(Type of Service,服务类型)。不管是TOS还是DSCP,它们都是QoS服务质量里面的技术实现。
说白了就是给VIP提供专线服务,没开通就没有这个服务
Checksum字段
用于校验数据的完整性
不同协议采取方法不同,IP协议中checksum只校验IP头部,没有数据部分
TCP/UDP校验头部和数据部分,校验没问题收并处理,有问题就丢弃
Protocol字段解读
无论是IT协议的Protocol字段,还是Ethernet以太网协议里面的Type字段,又或者是TCP/UDP协议里面的Port字段,这些字段的功能都是用于标识上层协议或应用。例如,ICMP协议号为1,TCP协议号为6,UDP的协议号为17
对于很多初学者来而,虽然知道了哪些协议号对应哪些上层应用,毕竟只要背熟了就好,但是我们还需要更深入的思考?例如,在IP协议里面加入协议号标识传输层协议,意义何在?
通过上面这张图我们可以看到,若PC1 PING PC2,则此时会采用ICMP协议,而ICMP协议对应的协议号是1。当PC2收到这个数据包时,拆开IP头部,则会看到协议号,根据协议号调用对应的上层协议或应用来进行上层数据处理。以这里例子来看,若PC2采用TCP或UDP来解开ICMP数据包,则无法正常解析,好比用word程序要打开一部mp4电影,肯定会有故障。而如果这里PC2根据协议号为1,调用ICMP协议来处理ICMP数据包,则可以正常解读并返回回应包。
所以,协议号(Protocol)、端口号(Port)、类型值(Type)这些的功能都是:标记上层协议/应用,告诉接收方,有正确的协议/应用来打开这个数据,功能相当于电脑文件的后缀名,告诉电脑用哪些应用程序来打开对应的文件。
ICMP协议
互联网信息控制协议,Internet Control Message Protocol
用于实现链路连通性测试和链路追踪,可以实现链路差错报告。
ICMP运行在传输层协议,服务于IP协议。
ICMP工具(基于ICMP协议开发的软件)
①Ping
②Traceroute/Tracert
2、PING:探测目的主机是否有问题,探测本地到目的的延迟等
Echo request 回显请求
Echo reply 回显应答
UDP协议
用户数据报协议,user datagram protocol 用于实现面向无连接不可靠协议
2.特征:
数据包结构非常简洁
处理速度快
实时交互
源端口:发送者端口
目标端口:目标服务器端口
数据包长度
校验
扩展
源端口属于随机高端口
1-1023是知名端口号,已经被占用
DNS协议(域名解析协议)
总结一点就是IP地址是面向主机的,而域名则是面向用户的
一个组织的系统管理机构, 维护系统内的每个主机的IP和主机名的对应关系
如果新计算机接入网络,将这个信息注册到数据库中
用户输入域名的时候,会自动查询DNS服务器,由DNS服务器检索数据库,得到对应的IP地址
我们可以通过命令查看自己的hosts文件:
域名解析过程
域名解析总体可分为一下过程:
(1) 输入域名后, 先查找自己主机对应的域名服务器,域名服务器先查找自己的数据库中的数据.
(2) 如果没有, 就向上级域名服务器进行查找, 依次类推
(3) 最多回溯到根域名服务器, 肯定能找到这个域名的IP地址
(4) 域名服务器自身也会进行一些缓存, 把曾经访问过的域名和对应的IP地址缓存起来, 可以加速查找过程
具体可描述如下:
1. 主机先向本地域名服务器进行递归查询
2. 本地域名服务器采用迭代查询,向一个根域名服务器进行查询
3. 根域名服务器告诉本地域名服务器,下一次应该查询的顶级域名服务器的IP地址
4. 本地域名服务器向顶级域名服务器进行查询
5. 顶级域名服务器告诉本地域名服务器,下一步查询权限服务器的IP地址
6. 本地域名服务器向权限服务器进行查询
7. 权限服务器告诉本地域名服务器所查询的主机的IP地址
8. 本地域名服务器最后把查询结果告诉主机
DHCP协议
动态主机配置协议,简单来说,DHCP就是一个不需要账号密码登录的、自动给内网机器分配IP地址等信息的协议。
原理
小结
DHCP报文种类
重点
发现包
提供包
请求包
回复包
TCP协议
功能
面向连接(三次握手,四次挥手)
可靠传输(经典重传,超时重传,快速重传/选择性重传)
流量控制(滑动窗口,拥塞管理)
多路复用(套接字)
wireshark 过滤语法
tcp.flags.syn == 1
tcp.flags.fin == 1
tcp.flags.ack == 1
可靠传输 SEQ序列号 ,ACK确认号,重传机制
流量控制
多路复用
一台机器上的应用可以有很多。但是实际的出口设备,比如说网卡、网线通常只有一份。因此这里需要用到一个叫作多路复用(Multiplex)的技术。多路复用,就是多个信号,复用一个信道。
tcp通过端口号(port)/套接(ip+port)实现多路复用
五元组
源目IP+源目Port+协议号 = 五元组