计算机网络
- 计算机网络
计算机网络(简称为网络)由若干节点和连接这些节点的链路组成的。
网络中的节点可以是计算机、集线器、交换机或者路由器。
节点之间的互联还需链路的参与,可以是无线链路,也可以是有限链路。
互联网
多个网络通过一些路由器相互连接起来,构成的一个覆盖范围更大的计算机网络,成为互联网,如下图所示:
2、计算机网络类别
按网络的作用范围可以分成
按网络的作用范围可以分成:广域网WAN、城域网MAN、局域网LAN、个人区域网PAN。
广域网WAN
广域网是指跨越较大地理范围的计算机网络。
它通常由多个局域网或城域网互相连接而成。
广域网可以覆盖多个城市、省份甚至国家之间的分支机构或办公地点,并且利用互联网等公共网络进行数据传输。广域网允许远程地点的计算机和用户之间实现高速、可靠的连接,以满足远程办公、数据共享和协作等需求。
城域网MAN
城域网是指连接位于同一个城市或者地理范围内的不同机构、公司或校园网络的计算机网络。
城域网的覆盖范围比局域网稍广,它可以通过光纤、无线电或其他传输介质来连接各个网络设施。
城域网的主要特点是传输距离较长,覆盖范围广,一般用于满足互联网接入的需求或者连接企事业单位之间的网络通信。
局域网LAN
局域网是指在一个相对较小的区域范围内建立的计算机网络。
它通常覆盖一个办公楼、学校或者是家庭等局部区域。
局域网的主要特点是传输速度快、延迟低,组网开销低、并且用于连接同一组织内部的计算机和设备。例如,一家公司内部多台电脑通过路由器或交换机连接在一起形成的网络就是局域网。
个人区域网PAN
个人区域网就是在个人工作的地方把属于个人使用的电子设备用无线技术连接起来的网络,因此也常称为无线个人区域网。其范围很小,大概十米左右。
注意的是,若中央处理机之间的距离非常近,例如仅一米的数量级甚至更小,则一般就称之为多处理机系统,而不称它为计算机网络。
按照网络使用者
按照网络使用者:公用网络、专用网络。
- 公有网
这是指电信公司出资建造的大型网络。“
公用”的意思就是所有愿意按照电信公司的规定交纳费用的人都可以使用这种网络。因此公有网也可以称为公众网。
- 专用网
这是某个部门为满足本单位的特殊业务工作的需要而建造的网络。
这种网络不向本单位以外的人提供服务。如军队、铁路、银行等系统。
按照传输介质分类
按照传输介质分类可以分为有线网络、无线网络。
有线网络
包括双绞线网络、光纤网络等。
无线网络
使用WIFI技术目前应用比较普遍。
网络拓扑结构
计算机网络还可以按拓扑结构分类,可以分为总线型网络
、星型网络
、环形网络
和网状型网络
。
总线型网络
总线型网络使用单根传输线把计算机连接起来。
它的优点是建网容易,增减节点方便,节省线路。
缺点是重负载时通讯效率不高,总线任意一处出现故障则全网瘫痪。
星型网络
星型网络是将每个计算机都以单独的线路与中央设备相连。中央设备早期是计算机,后来是集线器,现在一般是交换机或路由器。
这种网络拓扑便于网络的集中控制和管理,因为端用户之间的通信必须经过中央设备,缺点是成本高,中央设备对故障敏感。
环形网络
环形网络是将所有计算机的网络接口连接成一个环,局域网环可以是单环,也可以是双环,环中信号是单向传输的。
网状型网络
一般情况下,每个节点至少有两条路径与其他节点相连。
多用在广域网中,其优点是可靠性高,缺点是控制复杂,线路成本高。
3、OSI七层和TCP/IP五层以及对应网络设备对比示例图
4、物理层(Physical Layer)
负责传输比特流,通过物理介质(如电缆、光纤)传输数据。
物理层的主要功能是:利用传输介质为数据链路层提供物理连接,实现比特流的透明传输。
主要协议包括:
Ethernet:以太网协议,用于局域网(LAN)的物理连接和数据传输。
RS-232:用于串行通信的标准接口协议。
USB(Universal Serial Bus):用于连接计算机和外部设备的通用串行总线。
物理层设备:
- 中继器【Repeater,也叫放大器】
同一局域网的再生信号;两端口的网段必须同一协议;5-4-3规程:10BASE-5以太网中,最多串联4个中继器,5段中只能有3个连接主机;
- 集线器
同一局域网的再生、放大信号(多端口的中继器);半双工,不能隔离冲突域也不能隔离广播域。
5、数据链路层(Data Link Layer)
提供可靠的点对点数据传输,通过帧(Frame)进行数据分割和错误校验。
封装成帧就是在一段数据的前后部分添加首部和尾部,这样就构成了一个帧。
接收端在收到物理层上交的比特流后,就能根据首部和尾部的标记,从收到的比特流中识别帧的开始和结束。
首部和尾部包含许多的控制信息,他们的一个重要作用:帧定界(确定帧的界限,当数据是由ASCII码组成的文本时,可以使用特殊的八位二进制数作为帧定界符:SOH
、EOT
)。
透明传输:“透明”是指即使控制字符在帧数据中,但是要当做不存在去处理。即在控制字符前加上转义字符ESC
。
主要协议包括:
Ethernet(IEEE 802.3):局域网常用的数据链路层协议。(常用介质:红外、微波)
Wi-Fi(IEEE 802.11):无线局域网的数据链路层协议。
PPP(Point-to-Point Protocol):点对点协议,用于串行链路上的数据传输。
6、网络层(Network Layer)
负责数据包的路由和转发,通过IP地址识别不同的主机和网络。
网络层的主要任务是:通过路由选择算法,为报文或分组通过通信子网选择最适当的路径。
主要协议包括:
IP(Internet Protocol):互联网协议,用于在网络中传输数据包。
ICMP(Internet Control Message Protocol):互联网控制消息协议,用于发送错误和状态信息。
ARP(Address Resolution Protocol):地址解析协议,用于将IP地址映射到物理地址(MAC地址)。
**RARP协议(Reverse Address Resolution Protocol,逆地址解析协议):**用于将物理地址(MAC地址)转换为对应的IP地址。
版本指IP协议的版本,占4位,如IPv4和IPv6;
首部位长度表示IP首部长度,占4位,最大数值为15;
总长度表示IP数据报总长度,占16位,最大数值为65535;
TTL表示IP数据报文在网络中的寿命,占8位;
协议表明IP数据所携带的具体数据是什么协议的,如TCP、UDP。
数据转发的过程中,数据帧每一跳的MAC地址都在变化,而IP数据报每一跳的IP地址始终保持不变。
网络地址转换NAT技术
用于多个主机通过一个公有IP访问访问互联网的私有网络中,减缓了IP地址的消耗,但是增加了网络通信的复杂度。
NAT 工作原理:
从内网出去的IP数据报,将其IP地址替换为NAT服务器拥有的合法的公共IP地址,并将替换关系记录到NAT转换表中;
从公共互联网返回的IP数据报,依据其目的的IP地址检索NAT转换表,并利用检索到的内部私有IP地址替换目的IP地址,然后将IP数据报转发到内部网络。
ICMP协议详解
网际控制报文协议(Internet Control Message Protocol),可以报告错误信息或者异常情况,ICMP报文封装在IP数据报当中。
RIP/OSPF协议
路由器之间的数据传输需要遵循 内部网关协议(IGP),IGP协议包括RIP协议和OSPF协议。
RIP协议利用距离矢量算法来判断最优路径,它将到达目的地所需要经过的路由器的个数称为跳数,跳数越大,开销也就越大,当跳数大于或等于16时,将会判定为不可达,这也就意味着RIP协议只能应用在小型网络。
OSPF协议根据链路状态来判断最优路径,链路状态是指路由器和那些路由器相邻,OSPF通过输出端口向所有相邻的路由器进行广播,获取相邻路由器的链路状态,而每一个相邻的路由器又再次向所有相邻的路由器进行广播,最终区域内的所有路由器都能建立一个链路状态数据库,也就是全网拓扑图;这种向全网发送广播的方法叫做洪泛法,只有当链路状态发生变化时,路由器才会使用洪泛法进行广播;
7、传输层(Transport Layer)
提供端到端的可靠数据传输和错误恢复。
主要协议包括:
TCP(Transmission Control Protocol):传输控制协议,提供可靠的、面向连接的数据传输。
UDP(User Datagram Protocol):用户数据报协议,提供无连接的数据传输,适用于实时性要求较高的应用。
UDP协议详解
UDP数据报结构:
首部:8B,四字段/2B【源端口 | 目的端口 | UDP长度 | 校验和】 数据字段:应用数据
UDP协议的特点:
- UDP是无连接协议;
- UDP不能保证可靠的交付数据;
- UDP是面向报文传输的;
- UDP没有拥塞控制;
- UDP首部开销很小。
TCP协议详解
TCP首部:
- 序号字段:TCP的序号是对每个应用层数据的每个字节进行编号。
- 确认序号字段:期望从对方接收数据的字节序号,即该序号对应的字节尚未收到。用ack_seq标识;
- TCP段的首部长度最短是20B ,最长为60字节。但是长度必须为4B的整数倍。
TCP标记
可靠传输的基本原理
基本原理:
- 不可靠传输信道在数据传输中可能发生的情况:比特差错、乱序、重传、丢失。
- 基于不可靠信道实现可靠数据传输采取的措施:
差错检测:利用编码实现数据包传输过程中的比特差错检测。
确认:接收方向发送方反馈接收状态。
重传:发送方重新发送接收方没有正确接收的数据。
序号:确保数据按序提交。
计时器:解决数据丢失问题;
停止等待协议:是最简单的可靠传输协议,但是该协议对信道的利用率不高。
连续ARQ(Automatic Repeat reQuest 自动重传请求)协议:滑动窗口+累计确认大幅提高了信道的利用率。
TCP协议的流量控制
流量控制:让发送方发送速率不要太快,TCP协议使用滑动窗口实现流量控制。
TCP协议的拥塞控制
拥塞控制与流量控制的区别:流量控制考虑点对点的通信量的控制,而拥塞控制考虑整个网络,是全局性的考虑。
拥塞控制的方法:慢启动算法+拥塞避免算法。
慢开始和拥塞避免:
- 【慢开始】拥塞窗口从1指数增长;
- 到达阈值时进入【拥塞避免】,变成+1增长;
- 【超时】,阈值变为当前cwnd的一半(不能<2);
- 再从【慢开始】,拥塞窗口从1指数增长。
快重传和快恢复:
- 发送方连续收到3个冗余ACK,执行【快重传】,不必等计时器超时;
- 执行【快恢复】,阈值变为当前cwnd的一半(不能<2),并从此新的ssthresh点进入【拥塞避免】。
TCP连接的三次握手(重要)
TCP三次握手使用指令:
TCP三次握手图解
粗糙的三次握手解释
- 第一次握手:客户发送请求,此时服务器知道客户能发;
- 第二次握手:服务器发送确认,此时客户知道服务器能发能收;
- 第三次握手:客户发送确认,此时服务器知道客户能收。
详细的三次握手
假设有一台客户端,B有一台服务器。
最初两端的TCP进程都是处于CLOSED关闭状态
,客户端A打开链接,服务器端被打开链接。
一开始B的TCP服务器进程先创建传输控制块TCB,准备接受客户进程的链接请求,然后服务器进程就处于LISTEN
收听状态,等待A的连接请求。
建立连接(三次握手):
第一次握手
客户端进程首先创建传输控制模块TCB
。
向服务端发出连接请求报文段,这是首部当中的同步位SYN=1
,同时选择一个初始序号seq=x
。
TCP规定,SYN报文段
(即SYN=1
的报文段)不能写数据,但要消耗掉一个序号。
第二次握手
这时候客户端就进入了同步已发送的状态。
服务端收到连接请求报文段后,如果同意建立连接,则向客户端发送确认,在确认报文段中把SYN
位和ACK
位置都置为1
,确认号为ack+1
,同时也为自己选择一个初始序号y
。
同样的这个报文段也是不能写数据的,但同时要消耗掉一个序号。
这时服务端进入了同步收到状态。
第三次握手
客户端收到服务端的确认之后,向服务端给出确认。
确认报文段的ACK置1
,确认号ack=y+1
,而自己的seq=x+1
。
ACK报文段是可以携带数据的,但如果不携带数据则不消耗序号,在这种情况下,下一个数据报文段的序号仍为seq=x+1
。
三次握手的相关问题
TCP连接的四次挥手(重要)
TCP挥手的图解
详细的四次挥手
数据传输完毕之后,通信的双方都可释放连接。现在客户端A和服务端B都处于ESTABLISHED
状态。
第一次挥手
客户端A的应用进程先向TCP发出连接释放报文段,并停止再发送数据,主动关闭TCP连接。
客户端A把链接释放报文段首部的终止控制位FIN
置为1
,其序号为seq=u
,它等于前面以传送过的数据的最后一个字节的序号加1
。
这时候A进入了FIN-WAIT-1(终止等待1)
状态,等待B的确认。
注意:TCP规定:FIN报文段即使不携带数据,也消耗掉一个序号!!
2.第二次挥手
服务端B收到链接释放报文段后即发出确认,确认号是ack = u + 1
,而这个报文段自己的序号v
是等于B前面已传送过的数据的最后一个字节的序号加1
,然后B就进入CLOSE-WAIT(关闭等待)
状态。
TCP服务器进程这时应通知应用进程,因而从A到B这个方向的链接就释放了。这时的TCP链接处于半关闭状态,即A已经没有数据要发送了,但B若发送数据,A仍要接收,也就是说,从B到A这个方向的连接并未关闭,这个状态要维持一段时间。
第三次挥手
A收到来自B的确认后,就进入了FIN-WAIT-2
状态,等待B发出的连接释放报文段。若B已经没有要向A发送的数据,其应用进程就通知TCP释放连接,这时B发出的连接释放报文段必须使FIN = 1
。
现假定B的序号为w
,B还必须重复上次已发送过的确认号ack = u + 1
.这时B就进入LAST-ACK(最后确认)
状态,等待A的确认。
第四次
:
A在收到了B的链接释放报文段后,必须对此发出确认。在确认报文段中把ACK置1
,确认号ack=w+1
,而自己的序号是seq=u+1
(根据TCP标准,前面发送过的FIN报文段要消耗一个序号),然后进入到TIME-WAIT
(时间等待)状态。
注意: 现在TCP连接还没有还没有释放掉
。必须经过时间等待计时器设置的时间2MSL
后,A才能进入CLOSED状态。
MSL叫做最长报文段寿命,RFC793建议设在两分钟,但TCP允许不同的实现可以根据具体情况使用更小的MSL值。
为什么需要等待2MSL?
1. 为了保证A发送的最后一个ACK报文段能够到达B。
这个ACK报文段有可能丢失,因而使处于在LAST-ASK
状态的B收不到对己发送的FIN-ACK
报文段的确认。B会超时重传这个FIN+ACK
报文段,而A就能在2MSL时间内收到这个重传的FIN+ACK
报文段。接着A重传一次确认,重新启动2MSL
计时器,最后的A和B都正常进入CLOSED
状态。
如果A在TIME-WAIT
状态不等待一段时间,而是发送完ACK报文段后立即释放连接,那么就无法收到B重传的FIN+ACK
报文段,因而也不会再发送一次确认报文段。
2. 防止了已失效的连接请求报文段。
A 在发送完最后一个ACK报文段后,在经过时间2MSL,就可以使本连接持续的时间内所产生的所有报文段都从网络中消失,这样就可以使下一个连接中不会出现这种旧的连接请求报文段。B只要收到了A发出的确认,就进入CLOSED状态。同样,B在撤销相应的传输控制块TCB后,就结束了这次的TCP连接,所以B结束TCP连接的时间要比A早一些的。
TCP协议的特点:
- TCP是面向连接的协议;
- TCP是面向字节流的协议;
- TCP的一个连接有两端,即点对点通信;
- TCP提供可靠的传输服务;
- TCP协议提供全双工通信(每条TCP连接只能一对一);
TCP/UDP 对比
特性 | TCP(传输控制协议) | UDP(用户数据报协议) |
---|---|---|
连接类型 | 面向连接 | 无连接 |
可靠性 | 提供可靠的数据传输,保证数据完整性 | 不保证数据送达和顺序 |
数据顺序 | 确保数据包按顺序到达 | 不保证数据包的顺序 |
流量控制 | 具有流量控制机制 | 无流量控制 |
拥塞控制 | 支持拥塞控制机制 | 不支持拥塞控制 |
开销 | 头部开销较大(20字节或更多) | 头部开销较小(8字节) |
速度 | 较慢(需要建立连接和确认) | 较快(无连接和确认过程) |
适用场景 | 适用于需要可靠性和顺序的应用,如网页浏览、文件传输、电子邮件 | 适用于对速度要求高的应用,如视频流、语音通话、在线游戏 |
错误检测 | 提供错误检测和重传机制 | 提供简单的错误检测(校验和),不重传 |
TCP/IP模型体系结构
8、会话层(Session Layer)
管理不同主机之间的会话和对话。
主要协议包括:
NetBIOS(Network Basic Input/Output System):网络基本输入/输出系统,用于在网络上提供服务和资源共享。
SSH(Secure Shell):安全外壳协议,用于远程登录和安全数据传输。
9、表示层(Presentation Layer)
负责数据格式的转换和加密解密等操作。
主要协议包括:
SSL/TLS(Secure Sockets Layer/Transport Layer Security):安全套接层/传输层安全协议,用于加密网络通信。
MIME(Multipurpose Internet Mail Extensions):多用途互联网邮件扩展,用于电子邮件的编码和传输。
数据的表示、安全、压缩。(在五层模型里面已经合并到了应用层)
格式有,JPEG、ASCll、EBCDIC、加密格式等
10、应用层(Application Layer)
提供用户与网络服务之间的接口,支持各种应用程序。
主要协议包括:
HTTP(Hypertext Transfer Protocol):超文本传输协议,用于在Web上传输数据。
FTP(File Transfer Protocol):文件传输协议,用于在网络上传输文件。
SMTP(Simple Mail Transfer Protocol):简单邮件传输协议,用于发送电子邮件。
这些协议和层级之间的互相配合和协同工作,构成了网络通信的基础架构。
网络服务与最终用户的一个接口。
协议有:HTTP FTP TFTP SMTP SNMP DNS TELNET HTTPS POP3 DHCP。
计算机网络的层次结构
11、URL构成和HTTP流程
**<协议>://<主机>:<端口>/<路径>**
具体过程:
1.浏览器分析URL
2.浏览器向DNS请求解析IP地址
3.DNS解析出IP地址
4.浏览器与服务器建立TCP连接
5.浏览器发出取文件命令
6.服务器响应
7.释放TCP连接
8.浏览器显示
路由器工作原理
路由器是一种具有多个输入端口和输出端口的计算机,
工作在网络层,负责跨域传输数据,每个路由器都有一个路由表和转发表
路由表用来保存路由信息(比如源地址,目标地址,跳数,下一跳)
转发表是基于路由生成的,用来保存IP地址,子网以及映射的端口
路由器提供了两种重要的机制:路由和转发。
路由可以根据数据包的目标地址选择一条最优的路由路径 转发负责将数据包传输到路由器的输出端。
交换机工作原理
交换机负责局域网内主机之间的数据转发。
交换机内部有一个MAC地址表,记录了MAC地址与交换机端口的对应信息,当数据需要转发时主机将数据包发送给交换机,交换机将数据包中的源地址映射到端口,并缓存到MAC地址表中,而后根据数据包中的目标地址去MAC地址表中匹配。
匹配成功,则会通过单播将数据从端口转发到对应的MAC地址 匹配不成功,则会在局域网内进行广播,目标地址收到广播后会响应交换机,交换机将目标地址映射到对应的端口,并缓存到MAC地址表中,然后转发数据。
MAC地址表有一个老化机制,一定时间内没有通信的MAC地址和端口会被遗忘,从而提升效率,这个老化的时间默认是300秒。
一层/二层/三层交换机
交换机分为一层,二层,和三层交换机
一层交换机工作在物理层,主要负责局域网内的数据转发。
二层交换机工作在数据链路层,可以划分VLAN,从而区分广播域,在数据转发的时候多了一个判断VLAN的步骤,同一VLAN内可以互相通信。
三层交换机工作在网络层,提供路由功能,但不能完全取代路由器,因为基础原理不同。
DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)
DHCP(Dynamic Host Configuration Protocol,动态主机配置协议),通常被应用在局域网络环境中,主要作用是集中的管理、分配IP地址,使网络环境中的主机动态的获得IP地址、Gateway地址、DNS服务器地址等信息,并能够提升地址的使用率。
由于DHCP是一个UDP协议,所以运行起来更加高效。
DHCP协议采用客户端/服务器模型(C/S模型),服务端可以为客户端提供IP、掩码、网关、主机名、DNS等信息。客户端只需将IP获得方式设置为自动获取即可。
工作方式:IP获得需要通过发广播来实现客户端和服务器的通信,所以DHCP只能工作在局域网。
1、Client:向网络中发送广播,通过自己的UDP协议的68号端口向网络中发送DHCP Discover包,用来寻找网络中的DHCP Server.类似于你在你的公司大喊一声:"谁是公司老板"一样的道理。
2、Server:局域网中的所有DHCP服务器都能收到该Client发送的广播包,然后DHCP Server会检查自己的IP池中(也叫做作用域)是否还有可用IP可以分发。如果有的话,会直接将这个IP地址从池中拿出来,避免再发给别的客户端,并且通过自己的UDP协议的67号端口给Client发一个响应包DHCP Offer,同样通信是采用广播的方式,明确告诉其可以提供哪个IP给Client使用。类似于公司的几个老板都在公司喊了一声:“我是X老板,我有时间在哪个办公室接待你”。
3、Client:Client会收到局域网中的所有DHCP服务器发给自己的DHCP Offer包,默认选一个最优的DHCP Server进行IP获取(在这里就是第一个发送给他DHCP Offer的服务器算作最优)。然后继续向网络中通过UDP的68号端口发广播DHCP Resquest,明确指定DHCP Server IP地址和需要租用的IP地址,告诉它要从他这里获得IP信息。自然其他DHCP Server也能收到广播,确认不从自己这里拿IP信息后,会将上步从IP池中拿出来的IP在释放到池中,以便别人使用。类似于你在公司大喊一声:“李老板,我找你接待”,那么其他老板刚才计划接待你的时间就会被释放出来,用于接待别的客户。
4、Server:被确认的DHCP Server就会通过其UDP协议的67号端口发送DHCP ACK确认包,采用广播将IP、掩码、网关、DNS等信息还有IP租约一起发送给DHCP Client,Client确认IP可用后,根据IP租约开始计算使用时间。类似于李老板把你请进他的办公室,开始和你聊天,并计算聊天时间为30分钟,开始倒计时。
ACL 访问控制列表(Access Control List)
访问控制列表(Access Control List,ACL)是路由器和交换机接口的指令列表,用来控制端口进出的数据包。
这张表中包含了匹配关系、条件和查询语句,表只是一个框架结构,其目的是为了对某种访问进行控制。
ACL的作用:用来对数据包做访问控制(丢弃或者放行)。
网络的常见端口
HTTP/HTTPS:80/443
FTP:21
SSH:22
DHCP:67/68
RDP:3389
DNS:53
Telnet:23
SMTP:25
POP3:110
网络安全工程师(白帽子)企业级学习路线
第一阶段:安全基础(入门)
第二阶段:Web渗透(初级网安工程师)
第三阶段:进阶部分(中级网络安全工程师)
如果你对网络安全入门感兴趣,那么你需要的话可以点击这里👉网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!
学习资源分享
