一、网络基础1
1. 网络基础知识概念
1)路由器
①实现不同网段之间数据的转发,根据路由表会自己学习、生成、维护路由表
②转发数据三种形式:静态路由,直连路由,动态路由
静态路由:管理员手动添加的路由
优:不占用路由器太多的CPU和RAM资源,不会占用太多网络带宽
缺:不能动态反应网络拓扑,当发生网络变化则需手动更改路由表
默认路由:一种特殊的静态路由,当路由表中没有与目的地址同网段的表项时,如果有默认路由的话,路由器能够将数据发送给默认网关IP实现数据转发,若没有默认路由,该包将被丢弃
destination:0.0.0.0 匹配所有IP地址 via 网关IP
直连路由:路由器自动添加和自己直连的路由(同网段)
动态路由:由一些路由协议动态建立的路由
路由器能够根据路由器之间的交换的特定路由信息自动地建立自己的路由表,并且能够根据链路和节点的变化适时地进行自动调整。当网络中节点或节点间的链路发生故障,或存在其它可用路由时,动态路由可以自行选择最佳的可用路由并继续转发报文。
实现通讯: ?? ?1) 主机上要有相应的IP地址(逻辑地址) ?用十进制表示 ?192.168.10.1 ?? ? ? IP地址的组成: 网络信息(局域网标识)+主机地址信息 ?? ?2) 需要借助路由器中的路由表实现通讯
网关地址:路由器的地址(访问其他网络的出口=网关)
网关接口:路由器的接口
2)交换机
交换机:工作在二层的网络设备,用来实现在同一局域网内的数据转发,当路由器接口不够用时需要用此设备来扩展网络的接口进行数据的转发实现更大规模的网络通信
常用的交换机基本都是24口起步,企业的都是48口起步
实现通讯: ?? ?1) 主机上要有相应的mac地址(物理地址) 有12位16进制数组成 ?0-9 A B C D E F ?? ?2) 利用交换机进行通讯,有时需要借助广播方进行通讯 ?? ? ? 广播的产生有时会影响主机性能 ?? ?补充: 通讯的过程一定是有去有回的
3)传输介质
传输介质包括电缆,双绞线和光纤等
1.双绞线:有效传输长度100M? 线序: 标准568A:绿白绿,橙白蓝,蓝白橙,棕白棕。 标准568B:橙白橙,绿白蓝,蓝白绿,棕白棕。使用最多
2.光纤 ??
4)带宽以比特为单位的,常看到的下载速度是以千字节(kb)作为单位
B-KB-MB-TB
2. 两台主机互连实现通讯方式的原理
1)主机之间必须要有传输介质
2)主机上必须有网卡设备
可以将二进制信息转换为高低电压 信号的调制过程 可以将高低电压转换为二进制信息 信号的解调过程
3)多台主机之间需要协商网络速率
3. 网络架构层次模型
三个层次规划网络拓扑
核心层:路由器(网关接口),用来实现和外网通讯 有着冗余的能力(主备份)
汇聚层:交换机(三层交换机)实现冗余功能--策略控制的能力
接入层:交换机(两层交换机)将个人主机等终端设备接入到局域网中
4. OSI(开放式通信系统互连参考模型)七层模型
计算机通信诞生之初,系统化与标准化未收到重视,不同厂商只出产各自的网络来实现通信,这样就造成了对用户使用计算机网络造成了很大障碍,缺乏灵活性和可扩展性为解决该问题,ISO(国际标准化组织)制定了一个国际标准OSI(开放式通信系统互联参考模型)
7)应用层:为操作系统或网络应用程序提供访问网络服务的接口,实现与最终用户的应用软件之间的通信。应用层协议的代表包括: HTTP,HTTPS,FTP,TELNET,SSH,SMTP,POP3等。 ##网络进程访问应用层,为应用程序进程提供网络服务 2.提供用户身份验证 6)表示层:约束数据格式,负责格式转化,加密。解密。 5)会话层:建立、维护、管理(解除)会话。负责在数据传输中设置和维护计算机之间的数据的逻辑传输通道。 4)传输层:定义传输数据的协议端口号 TCP协议:传输控制协议,实现数据的可靠传输,tcp将数据封装成用户数据报或者说是报文,然后分段传输。?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ? UDP协议:用户数据报协议,实现数据的快递传输,不可靠 3)网络层:提供逻辑地址,主要的协议有ip。(IP地址,用于在网络中标识每一台设备,作用于网络间的通信,提供路由和选路)主要是将报文封装成ip数据包。 2)数据链路层:确认MAC(物理)地址,每个MAC地址写在网卡上,将ip数据包封装成帧,传给物理层。? 1)物理层:提供数据的传输介质,传输速度。将数据以电流的形式传输过去。
5. 数据包封装和解封装过程
数据包封装过程:
1)主机在应用层产生数据给下一层表示层(DATA)
2)表示层将数据进行二进制格式化并对其加密(DATA+数据格式)
3)会话层对数据进行封装建立会话(DATA+数据格式+会话建立)
4)传输层将为传输的数据提供协议和端口号,封装成数据报文(DATA+数据格式+会话建立+源端口 目标端口)
5)网络层提供IP地址,对数据报文封装成IP数据包(DATA+数据格式+会话建立+源端口 目标端口+ 源IP 目标IP)
6)数据链路层确认物理地址(MAC),对IP数据包封装成帧(DATA+数据格式+会话建立+源端口 目标端口+ 源IP 目标IP+源mac 目标mac)
7)物理层提供物理介质,决定数据将以何种形式发送,将帧变为比特流(1101010101100...流)
理解:源主机对目标主机发送请求时,只是知道目标主机的IP地址,这时源主机填写的mac地址则是同一网段网关的mac地址,(数据链路层会查看ARP缓存中是否有默认网关的mac地址,若无则进行ARP广播询问网关MAC地址)以便让路由器进行解封装包,路由器解封装查看到目标IP地址不是发给自己的时候则会进行封装数据转发给对应的网络接口,如果不匹配任何路由,则发送目标地址不可达的错误信息给主机,如果有可达路径,将源mac地址和目标mac地址封装成帧,则发送给目的IP同网段路由再发给目的主机。
数据包解封装过程
1)通过物理介质传输到目标主机到数据链路层
2)数据链路层查看到匹配的源mac地址和目标mac地址解封数据之后交给网络层
3)网络层查看到源IP和目标IP周解封数据交给传输层
4)传输层查看到源端口和目标端口之后解封数据交给会话层
5)会话层查看到会话建立数据之后交给表示层
6)表示层将加密的数据进行解密并转格式交给应用层
7)应用层读取其中的data数据
6. ARP协议和DNS原理
1. ARP协议(地址解析协议):将IP地址解析映射成MAC地址
arp -a :查看Windows主机的ARP表
Linux:arp -I ens33 IP地址 :查看一个主机的MAC地址(适用于同一网段上)
ARP协议是属于"数据链路层 or 网络层"的协议,在以太网中的数据帧从一个主机到达网内的另一台主机是根据48位的以太网地址(硬件地址)来确定接口的,而不是根据32位的IP地址。内核(如驱动)必须知道目的端的硬件地址才能发送数据
当不知道目标MAC地址的时候,会发送mac地址为全是FF的广播包,其他主机通过广播收到包之后会拆封包,当看到目标IP地址不是自己的时候就会把这个数据给丢弃(与自己没关系),看到 IP地址是自己的时候,目标主机给回复一个带上自己MAC地址的数据,发送方接收到之后会在自己的ARP表中写上IP和MAC地址的对应关系,第二次和目标主机建立连接的时候不需要发广播,只需要直接通信,通过一个主机发送广播,其他主机都知道发送方这个IP所对应的MAC地址,其他主机不需要广播便可直接通信
作用:减少交换网络的广播的产生
2.DNS(域名解析系统)
DNS 是域名系统 (Domain Name System) 的缩写,是因特网的一项核心服务,它作为可以将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。---将域名解析成IP地址
根域 :.
顶级域(一级域名):.com? .cn? .edu .info
主域名(二级域名)
子域名(主机域名)
任何一个连接在因特网的主机或者路由器,都有一个唯一层次结构的名字叫做域名。域名可以划分为各个子域,子域还可以继续划分为子域的子域
域名服务器:
根域名服务器:本地域名服务器在本地查询不到解析结果时,则第一步会向它进行查询,并获取顶级域名服务器的IP地址
顶级域名服务器(TLD):负责管理在该顶级域名服务器下注册的二级域名,返回二级域名所在的权威域名服务器IP地址
权威域名服务器:在特定区域内具有唯一性,负责维护该区域内的域名与IP地址之间的对应关系,如云解析DNS
本地域名服务器:相应来自客户端的递归请求,并最终跟踪知道获取到解析结果的DNS服务器,如用户本机自动分配的DNS,运营商ISP分配的DNS,谷歌等公共DNS
每个层的域名上都有自己的域名服务器,最顶层的是根域名服务器
每一级域名服务器都知道下级域名服务器的IP地址,以便于一级一级向下查询
DNS解析过程
1.用户在Web浏览器中输入“www.example.com”,浏览器先检查自身缓存中有没有解析过的这个域名对应的ip地址,如果有,解析结束.如果浏览器没有缓存,那么就检查操作系统的hosts文件,称为本地解析,比如windows就是C:\Windows\System32\drivers\etc\hosts文件,linux在/etc/hosts文件中配置。如果命中域名解析结束。如果没有命中域名解析,浏览器会向本地的DNS服务器查询,如果命中域名解析就结束。 本地的DNS:本地运营商提供的DNS服务器 2. 如果本地DNS服务器没有命中域名解析,那么本地DNS服务器采用递归查询的方法,向根域名服务器进行查询。 ?(递归:直接告诉你结果,会转发) 3. 根域名服务器开启迭代查询方法告诉本地域名服务器,下一步应该查询的顶级域名服务器.com TLD的IP地址 ? (迭代:下一步该去查谁,不会告诉你结果) 4. 本地域名服务器向顶级域名服务器.com TLD进行查询 5. .com TLD服务器告诉本地域名服务器,下一步查询example.com权威域名服务器的IP地址 6. 本地域名服务器向example.com权威域名服务器发送查询 7. example.com权威域名服务器告诉本地域名服务器所查询的主机IP地址 8. 本地域名服务器最后把查询的IP地址响应给web浏览器 ? ? ①本地建立缓存,②将响应的结果告诉浏览器 ?一旦DNS查询的8个步骤返回了example.com的IP地址,浏览器就能够发出对网页的请求
9. 浏览器向IP地址发出HTTP请求 10. 该IP处的web服务器返回要在浏览器中呈现的网页
Windows主机查看DNS服务器信息和DNS域名信息:ipconfig /displaydns
Linux 查看域名解析的过程:dig www.baidu.com ?+trace (追踪)
二、网络基础2
1. TCP/IP层次模型
是指能够在多个不同网络间实现信息传输的协议簇。TCP/IP协议不仅仅指的是TCP和IP两个协议,而是指一个由FTP、SMTP、TCP、UDP、IP等协议构成的协议簇, 只是因为在TCP/IP协议中TCP协议和IP协议最具代表性,所以被称为TCP/IP协议。
4)应用层:将OSI上三层融合,用于产生需要传递的数据
3)传输层
2)网络层
1)链路层(网络接口层):将OSI下两层融合
2. 网络协议TCP,UDP报文
1)定义
TCP:传输控制协议--(面向连接的网络协议)
UDP:用户报文协议--(无连接的网络协议)
2)结构,功能
TCP结构:源端口+目标端口+6控制字段 (可靠性高,传输效率低)
UDP结构:源端口+目标端口 (可靠性低,传输效率高)
UDP的特性: 1.面向无连接:不用先与对方建立连接,不握手。因此传输速度很快。 2.不可靠的:没有确认机制,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。 3.UDP传输数据时有大小限制,每个被传输的数据报必须限定在64KB之内 因为它不属于连接型协议,因而具有资源消耗小,处理速度快的优点,所以通常音频、视频和普通数据在传送时使用UDP较多,因为它们即使偶尔丢失一两个数据包,也不会对接收结果产生太大影响。 udp一般用于 1. 即时通信:qq聊天 对数据准确性和丢包要求比较低,但速度必须快 2. 在线视频:速度一定要快,保证视频连续,但是偶尔花了一个图像帧,人们还是能接受的 3. 网络语音电话:语音数据包一般比较小,需要高速发送,偶尔断音或串音也没问题
3)区别
①TCP面向连接的(如打电话要先拨号建立连接);UDP是无连接的,发送数据之前不需要建立连接
②TCP提供可靠的服务,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付
③UDP具有较好的实时性,工作效率比TCP高,适用于对高速传输和实时性有较高的通信或广播通信。 每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信
3. TCP三次握手过程
? ? syn(1): 请求建立连接控制字段???fin(1): 请求断开连接控制字段? ? ?ack(1): 数据信息确认控制字段 1) 第一次握手:? ?? ? ? 发送syn请求建立连接控制字段, 发送seq序列号信息(X), 第一个数据包的系列号默认为0?
2) 第二次握手: ?? ? ? 发送syn请求建立连接控制字段, 同时还会发送ack确认控制字段 ?? ? ? 发送seq序列号信息也为0(Y), 还会发送ACK确认号(X+1)信息(对上一个数据序列号信息进行确认) 3) 第三次握手: ?? ? ? 发送ack确认控制字段,发送seq序列号信息(X+1),发送ack确认号(Y+1)
4. TCP四次挥手过程
1) 第一次挥手: ?? ? ? 发送fin请求断开连接控制字段 fin=1;ack=1(请求方)?
2) 第二次挥手: ?? ? ? 发送ack确认控制字段 ack=1 (回应方) 3) 第三次挥手: ?? ? ? 发送fin请求断开连接字段, 发送ack确认字段 (回应方)?
4) 第四次挥手: ?(请求方) ?? ? ? 发送ack控制字段 ??
为什么断开连接需要四次?
原因:请求方请求断开连接之后,回应方传输层发送ACK确认字段,但是传输层没有资格对绘画进行关闭终止会话,需要指示上一层会话层的指令,会话层指示说可进行关闭,传输层第二次再发送FIN关闭和ACK确认控制字段的数据包给请求方。
5. TCP十一种状态集转换
?TCP三次握手: (5种状态) ? ? 00: 最开始两台主机都处于关闭状态 ??? ?closed ?? ?01: 服务端将相应服务进行开启 ? ? ??? ?closed --- listen ?? ?02: 客户端向服务端发出连接请求 ? ??? ?closed --- syn_sent ?? ?03: 服务端接收到连接请求,进行确认 ?listen --- syn_rcvd ?? ?04: 客户端再次进行确认 ? ? ? ? ? ? syn_sent --- established ?? ?05: 服务端接收到确认信息 ? ? ? ? ? syn_rcvd --- established
?TCP四次挥手:(6种状态) ?? ?01: 客户端发送请求断开连接信息 ? ? ? ? ? ? ? ? ?established -- fin_wait1 ? ? 02: 服务端接收断开连接请求,并进行确认 ? ? ? ? ? established -- close_wait ?? ?03: 客户端接收到了确认信息 ? ? ? ? ? ? ? ? ? ? ? ?fin_wait1 ? -- fin_wait2 ?? ?04: 服务端发送ack和fin字段 ? ? ? ? ? ? ? ?? ??? ? ?close_wait ?-- last_ack ?? ?05: 客户端接收到请求断开连接信息,发送确认 ? ?fin_wait2 ? -- time_wait? ?? ?06: 服务端接收到确认信息 ? ? ? ? ? ? ? ? ? ? ? ? ?last_ack ? -- closed ?? ?07: 客户端等待一段时间 ? ? ? ? ? ? ? ? ? ? ? ? ? time_wait ? -- closed 注!客户端状态变成closing 原因:没有收到第二次挥手的ack信息,但接收到了第三次挥手的fin字段,就会由fin_wait1 变成closing(---三次挥手的由来)
|