一.水晶头,光纤,网线种类
1.水晶头
水晶头是连接网线与网络设备(如路由器、交换机、电脑)的接口部件,主要用于铜缆网线
最常用的是rj-45
- 按线序标准分类
- T568A 标准:线序为绿白、绿、橙白、蓝、蓝白、橙、棕白、棕。
- T568B 标准:线序为橙白、橙、绿白、蓝、蓝白、绿、棕白、棕(应用最广泛,默认标准)。
- 按网线类型适配分类
- Cat5/Cat5e 水晶头:适用于五类、超五类网线,支持 100Mbps 速率,结构较简单。
- Cat6/Cat6a 水晶头:适用于六类、超六类网线,支持 1000Mbps 及以上速率,内部有十字骨架或屏蔽层,减少干扰。
- Cat7/Cat8 水晶头:适用于七类、八类网线,支持万兆速率,采用全屏蔽设计,需搭配屏蔽网线使用。
- 按屏蔽性能分类
- 非屏蔽水晶头(UTP):无屏蔽层,适用于普通环境,成本低。
- 屏蔽水晶头(STP/FTP):带金属屏蔽层,适用于强干扰环境(如机房、工业区域),需与屏蔽网线配套。
2.光纤
光纤是利用光信号传输数据的介质
多模光纤 传输距离近 2公里
单模光纤 传输距离远 120公里
3.网线
网线类别越高,带宽和速率越高,价格也越高,家庭常用 Cat5e/Cat6,企业常用 Cat6a 及以上。
选择时需结合实际场景(距离、速率、环境干扰),确保各部件兼容以发挥最佳性能。
二.交换机和路由器
以我的理解概括一下它们的功能:
交换机:连接局域网内的机器
路由器:连接不同网络的机器
1.交换机的功能
交换机使用mac地址实现局域网的通信,即在数据前加上目标地址和源地址的mac地址
基于MAC地址表将数据帧精准转发到目标设备,避免广播风暴。
学习机制:自动记录设备的MAC地址与端口的映射关系(通过ARP协议)
交换机的种类:
傻瓜交换机(TP-link/Dlink/水星...)
4口 8口 12口 16口 24口 48口
程控交换机(存储程序控制交换机,配置管理,思科、华为、华三、锐捷、中兴、瑞斯康达)
2.路由器的功能
实现不同局域网之间主机通讯,可以隔离广播风暴(路由不同的接口连接不同广播域)
三.网络层次模型
OSI七层模型
应用层 | 直接向用户提供服务,完成用户希望在网络上完成的各种工作 |
表示层 | 把数据通过编码表示出来,比如jpeg,avi,mp3,就是把数据表示出来 |
会话层 | 太抽象,建立和管理应用程序之间的通信 |
传输层 | tcp和udp工作的层级,作用就是监控数据传输的质量,保证数据的正确传输 |
网络层 | 把上层的帧打包成报文,通过IP寻址,路由选择算法,通过通信子网选择最适当的路径把报文送走 |
数据链路层 |
二层交换机运行的层级,把比特封装成帧,并通过mac地址区分正确的网络设备,保证正确传输 |
物理层 | 就是网线,光纤,集线器,中继器啥的物理设备内 |
网络在实际使用中并不是严格按照这七层模型,上三层应用层表示层会话层其实可以模糊成一层。
TCP/IP四层模型
应用层 | 直接为用户的应用程序提供服务 |
传输层 | 建立端到端的通信,tcp和udp,保证数据可靠传输 |
网络层 | 负责数据包的路由和转发,实现不同网络之间的通信 |
网络接口层 | 负责数据在主机和网络之间的转换 |
DNS解析流程
下面就以www.baidu,com这个网址来分析一下dns的解析过程。
1浏览器输入www.baidu.com,首先检查浏览器缓存里有没有对应的ip地址,如果有返回ip,如果没有,则查询本地hosts文件
2查看hosts里有没有对应的ip,如果有返回ip,如果没有则查询本地dns
3查询本地dns,如果有返回ip,如果没有,则查询根服务器
4根服务器会返回给LDNS顶级域名.com的ip地址
5LDNS继续请求.com,返回权威服务器ip地址
6LDNS继续请求权威服务器,权威服务器一般会存有我们想要的ip,把ip返回给LDNS
7LDNS拿到ip后自己缓存一份,返回给浏览器一份
8浏览器使用拿到的ip建立连接
TCP和UDP协议
1TCP
TCP: 传输控制协议,是一种面向连接的、可靠的、基于字节流的传输层通信协议。
特点:面向连接,可靠,传输效率低
应用场景:web浏览器,电子邮件,文件传输程序
2UDP
UDP: 用户数据报协议,属于无连接的传输协议
特点:无连接、不可靠、快速传输应用场景:域名系统(DNS),视频流,IP语音(VOIP)
解析期间涉及到两个特殊查询:
客户端---本地dns服务器:递归查询
本地dns服务器---根域名服务器 顶级域名服务器 权威域名服务器:迭代查询所谓递归查询过程就是 “查询的递交者” 更替, 而迭代查询过程则是 “查询的递交者”不变。
TCP三次握手和四次挥手
三次握手
三次握手其实就是指建立一个TCP连接时,需要客户端和服务器总共发送3个包。进行三次握手的主要作用就是为了确认双方的接收能力和发送能力是否正常、指定自己的初始化序列号为后面的可靠性传送做准备。实质上其实就是连接服务器指定端口,建立TCP连接,并同步连接双方的序列号和确认号,交换TCP窗口大小信息。
第一次握手:客户端给服务端发送一个SYN=1请求建立连接,再发送一个seq=x代表自己的客户端初始序列号。此时客户端处于 SYN_SENT
状态。
第二次握手:服务器向客户端发送SYN=1,ACK=1表示自己收到请求,并发送自己服务器的初始序列号seq=y,ack=x+1。此时服务器处于 SYN_RCVD
的状态。
第三次握手:客户端发送ACK=1表示确认,然后发送seq=x+1,ack+y+1建立连接。此时客户端处于 ESTABLISHED
状态。服务端收到报文后,建立连接。此时服务端处于 ESTABLISHED
状态
为什么需要三次握手,两次不行吗?
为了弄清这个问题,我们需要先弄明白三次握手的目的是什么,能不能只用两次握手来达到同样的目的。
• 第一次握手:客户端发送网络包,服务端收到了。
这样服务端就能得出结论:客户端的发送能力、服务端的接收能力是正常的。
• 第二次握手:服务端发包,客户端收到了。
这样客户端就能得出结论:服务端的接收、发送能力,客户端的接收、发送能力是正常的。不过此时服务器并不能确认客户端的接收能力是否正常。
• 第三次握手:客户端发包,服务端收到了。
这样服务端就能得出结论:客户端的接收、发送能力正常,服务器自己的发送、接收能力也正常。
因此,需要三次握手才能确认双方的接收与发送能力是否正常。
四次挥手
TCP四次挥手是TCP协议中用于终止一个连接的过程,需要客户端和服务端总共发送4个包以确认连接的断开
第一次挥手:客户端向服务端发送一个FIN=1断开连接请求,并发送客户端序列号seq=x。客户端进入FIN-WAIT-1阶段
第二次挥手:服务端向客户端发送ACK=1表示自己受到请求,并向客户端发送服务器序列号seq=y和ack=x+1表示收到客户端的序号seq并将其值加1作为自己确认号ack的值。服务器进入CLOSE-WAIT阶段
第三次挥手:服务端向客户端发送FIN=1,ACK=1表示可以断开连接,并发送服务器序列号seq=y+1和ack=x+1要求客户端回复。服务器进入LAST-ACK阶段
第四次挥手:客户端发送ACK=1表示确认,发送seq=x+1,ack=y+1断开连接。随后客户端开始在TIME-WAIT阶段等待2MSL
这里有一张别人的图参考一下
为什么挥手需要四次?
挥手需要四次,是因为在关闭TCP连接时:
1. 客户端发送FIN请求关闭,服务端需回复ACK确认收到;
2. 服务端可能未处理完数据,需等待完成后才能发送自己的FIN;
3. 客户端收到服务端FIN后,再回复ACK确认。
因此,双方需两次确认,形成四次交互。
tcp11种状态
客户端发送FIN给服务端-->ESTABLISHED-->FIN_WAIT1第一次等待
服务端收到回复ACK: ESTABLISHED--->CLOSED_WAIT关闭等待
收到后客户端:FIN_WAIT1-->FIN_WAIT2第二次等待
服务端继续回复客户端FIN: CLISED_WAIT--->LAST_ACK
客户端回复确认ACK:FIN_WAIT2-->TIME_WAIT时间等待-->CLOSED状态
最后服务端收到确认ACK: LAST_ACK---> CLOSED
各个状态的意义如下:
CLOSED:初始状态,表示TCP连接是“关闭着的”或“未打开的”。
LISTEN :表示服务器端的某个SOCKET处于监听状态,可以接受客户端的连接。
SYN_RCVD :表示服务器接收到了来自客户端请求连接的SYN报文。在正常情况下,这个状态是服务器端的SOCKET在建立TCP连接时的三次握手
会话过程中的一个中间状态,很短暂,基本上用netstat很难看到这种状态,除非故意写一个监测程序,将三次TCP握手过程中最后一个ACK报
文不予发送。当TCP连接处于此状态时,再收到客户端的ACK报文,它就会进入到ESTABLISHED状态。
SYN_SENT :这个状态与SYN_RCVD状态相呼应,当客户端SOCKET执行connect()进行连接时,它首先发送SYN报文,然后随即进入到SYN_SENT状态,并等待服务端的发送三次握手中的第2个报文。SYN_SENT状态表示客户端已发送SYN报文。
ESTABLISHED :表示TCP连接已经成功建立。
FIN_WAIT_1 :这个状态得好好解释一下,其实FIN_WAIT_1和FIN_WAIT_2两种状态的真正含义都是表示等待对方的FIN报文。而这两种状态
的区别是:FIN_WAIT_1状态实际上是当SOCKET在ESTABLISHED状态时,它想主动关闭连接,向对方发送了FIN报文,此时该SOCKET进入到FIN_WAIT_1状态。而当对方回应ACK报文后,则进入到FIN_WAIT_2状态。当然在实际的正常情况下,无论对方处于任何种情况下,都应该马
上回应ACK报文,所以FIN_WAIT_1状态一般是比较难见到的,而FIN_WAIT_2状态有时仍可以用netstat看到。
FIN_WAIT_2 :上面已经解释了这种状态的由来,实际上FIN_WAIT_2状态下的SOCKET表示半连接,即有一方调用close()主动要求关闭连
接。注意:FIN_WAIT_2是没有超时的(不像TIME_WAIT状态),这种状态下如果对方不关闭(不配合完成4次挥手过程),那这个FIN_WAIT_2状态将一直保持到系统重启,越来越多的FIN_WAIT_2状态会导致内核崩溃
TIME_WAIT :表示收到了对方的FIN报文,并发送出了ACK报文。TIME_WAIT状态下的TCP连接会等待2*MSL(Max Segment Lifetime,
最大分段生存期,指一个TCP报文在Internet上的最长生存时间。每个具体的TCP协议实现都必须选择一个确定的MSL值,RFC 1122建议是2分
钟,但BSD传统实现采用了30秒,Linux可以cat /proc/sys/net/ipv4/tcp_fin_timeout看到本机的这个值),然后即可回到CLOSED可
用状态了。如果FIN_WAIT_1状态下,收到了对方同时带FIN标志和ACK标志的报文时,可以直接进入到TIME_WAIT状态,而无须经过
FIN_WAIT_2状态。(这种情况应该就是四次挥手变成三次挥手的那种情况)
CLOSING :这种状态在实际情况中应该很少见,属于一种比较罕见的例外状态。正常情况下,当一方发送FIN报文后,按理来说是应该先收到
(或同时收到)对方的ACK报文,再收到对方的FIN报文。但是CLOSING状态表示一方发送FIN报文后,并没有收到对方的ACK报文,反而却也收
到了对方的FIN报文。什么情况下会出现此种情况呢?那就是当双方几乎在同时close()一个SOCKET的话,就出现了双方同时发送FIN报文的情
况,这是就会出现CLOSING状态,表示双方都正在关闭SOCKET连接。
CLOSE_WAIT :表示正在等待关闭。怎么理解呢?当对方close()一个SOCKET后发送FIN报文给自己,你的系统毫无疑问地将会回应一个ACK
报文给对方,此时TCP连接则进入到CLOSE_WAIT状态。接下来呢,你需要检查自己是否还有数据要发送给对方,如果没有的话,那你也就可以
close()这个SOCKET并发送FIN报文给对方,即关闭自己到对方这个方向的连接。有数据的话则看程序的策略,继续发送或丢弃。简单地说,当
你处于CLOSE_WAIT状态下,需要完成的事情是等待你去关闭连接。
LAST_ACK :当被动关闭的一方在发送FIN报文后,等待对方的ACK报文的时候,就处于LAST_ACK状态。当收到对方的ACK报文后,也就可以进入到CLOSED可用状态了。
因特网层协议介绍
ICMP Internet控制报文协议。它是TCP/IP协议簇的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。
RARP 反向地址转换协议
ARP 地址解析协议,是根据IP地址获取物理地址的一个TCP/IP协议。作用:有效的避免广播风暴的产生
动态ARP:自动完善ARP表信息,会定时更新ARP条目,自动更新ARP表时会消耗服务器性能,适用于主机更换频繁网络。
静态ARP:手工配置ARP表信息,不会实时更新ARP条目,节省服务器性能,适用于主机更换不频繁网络。
IP地址
ip地址组成
ip地址由32位二进制组成,分为4段,每段有8位,取值范围是0-255,
其中ip分为两大部分,网络部分和主机主机部分
- 网络部分(Network):用于识别子网或网络。
- 主机部分(Host):用于识别网络中的具体设备。
通俗的说,网络号相同的设备可以不经路由器直接互相通信
常用A、B、C三类IP地址的组成
A、B、C类IP地址的网络部分和主机部分占位不同。
网络号以127开头的IP地址是一个特殊的网络地址,被称为回送地址(Loopback Address)。回送地址是一个虚拟的IP地址,通常用于测试和诊断目的,而无需真正连接到其他网络。当一台设备使用回送地址时,数据包将发送到该设备自身,而不是发送到其他设备或网络。
私有IP地址
私有IP地址是专门为企业内部网络设计的,不能在互联网中使用。
私有地址包括以下三组:
• A类:10.0.0.0 ~ 10.255.255.255
• B类:172.16.0.0 ~ 172.31.255.255
• C类:192.168.0.0 ~ 192.168.255.255
使用私有ip是无法访问外网的,只有公网ip可以访问外网,因此需要使用NAT转换(网络地址转换),通常在路由器或防火墙上进行NAT转换成公网ip
每个网络最大主机数
全 0 和全 1 的主机号有特殊用途(全 0 表示网络地址,全 1 表示广播地址 ),不能分配给主机
特殊的ip地址
1.每一个字节都为0的地址(“0.0.0.0”)对应于当前主机;
2.IP地址中的每一个字节都为1的IP地址(“255.255.255.255”)是当前子网的广播地址;
3.IP地址中凡是以“11110”开头的E类IP地址都保留用于将来和实验使用。
4.IP地址中不能以十进制“127”作为开头,该类地址中数字127.0.0.1到127.255.255.255用于回路测试,如:127.0.0.1可以代表本机IP地址,用“http://127.0.0.1”就可以测试本机中配置的Web服务器。
5.169.254.0.0~169.254.255.255,是开启了dhcp服务的设备但又无法获取到dhcp的会随机使用这个网段的ip
子网掩码
子网掩码是一个与IP地址结合使用的32位二进制值,它用于标识一个IP地址中的网络部分和主机部分。
如何利用子网掩码划分网络?
我们拿到一个ip和子网掩码,先把他们化成二进制,然后进行按位与计算,就可得到网络号
例如:116.63.0.10/24
01110100.00111111.00000000.00001010 (116.63.0.10)
& 11111111.11111111.11111111.00000000 (255.255.255.0)
-----------------------------------------------------
01110100.00111111.00000000.00001000 (116.63.0.0)
进行按位与运算后,得到的网络地址就是116.63.0.0
可用主机地址就是116.63.0.1-116.63.0.254
0和255有特殊用途
子网划分
子网划分就是把主机位借位给网络位,从而把一个大的网络拆解成小的网络
子网划分
例如 116.63.0.10/29
01110100.00111111.00000000.00001010 (116.63.0.10)
& 11111111.11111111.11111111.11111000 (255.255.255.248)
-----------------------------------------------------
01110100.00111111.00000000.00001000 (116.63.0.8)
进行按位与运算后,得到的网络地址就是116.63.0.8,
将主机位全设为1,转换成点分十进制,
可用主机地址就是116.63.0.9-116.63.0.14
linux常用网络命令
1.ping
功能:来检测网络的连通情况和分析网络速度
#常用选项
-t #持续ping,不中断。不加该选项只ping4个包。
-c #ping的包数,默认是4个。
-W1 #多长时间ping一次。
-f #极速ping。
2.tracert (windows系统)
功能:路由跟踪(检查你与目标之间每个路口是否畅通)
#常用选项 :-n 禁止把IP解析为对应的域名(主机名)
3.traceroute (linux系统)
功能:路由跟踪(检查你与目标之间每个路口是否畅通)
#常用选项 :-n 禁止把IP解析为对应的域名(主机名)
4.nslookup
功能:查看主机使用的哪个dns
5.netstat 和ss差不多
功能:打印网络连接、路由表、tcp11种状态。
常用:netstat -tnulp
#常用选项
-l #只显示监听套接字。
-n #不做名字解析
-t #显示tcp端口
-u #显示udp端口
-p #显示pid和程序名字
-r #显示路由表-a #显示所有的套接字
6.iftop
功能:实时监控网络带宽使用情况
TX:发送流量
RX:接收流量
TOTAL:总流量
Cumm:运行iftop到目前时间的总流量
peak:流量峰值
rates:分别表示过去 2s 10s 40s 的平均流量
#常用选项
-i #设定监测的网卡
-B #以bytes为单位显示流量(默认是bits)
-n #使host信息默认直接都显示IP
-P #使host信息及端口信息默认就都显示
-m #设置界面最上边的刻度的最大值,刻度分五个大段显示按q退出监控。
7.route
功能:显示内核路由表信息,-n
选项表示以数字形式显示 IP 地址(不进行域名解析 )
8.ip route
功能:
查看或操作主机的路由表,能更灵活、详细地显示和配置路由,输出内容包含路由的目标网段、下一跳、出接口等信息 。
9.route add default gw xxxx
功能:再linux系统中添加默认网关
10.ip route add 0/0 via xxxx
功能:添加默认路由,可以指定下一跳的地址
ip route add default via 192.168.74.1
11.ip add add 10.0.0.201/24 dev eth0
功能:为网卡添加一个ip地址
12.telnet
功能:一种远程登录的工具。同样可以检查某个主机是否开启某个端口
tcpdump抓包
略
这是我的个人学习笔记,主要用于记录自己对知识点的理解和梳理。由于目前仍在学习探索阶段,内容中难免存在理解偏差或表述疏漏,恳请各位大佬不吝赐教,多提宝贵意见~ 若有不同看法,欢迎理性交流探讨,感谢包容与指正!