网络基础
一、基础介绍
数据包的传输过程
数据传输过程中,源mac和目标mac会被路由器更改。
ISP ,因特网服务提供商,例如:移动,电信等
跨网段的主机,ping的时候,第一个数据包会被路由器丢掉。
原因: 第一次发送数据,需要先通过ARP请求找到目的mac,由于ARP请求响应时间超过需要响应的数据包的时间,导致路由器中ARP映射表没有目的IP和mac,此时路由器会将该包丢弃。在第一次ARP请求结束后,ARP映射表有了IP对应的mac,后续就能正常接收到数据包了。
上网方式
电话线入户
ADSL电话拨号上网。上网的时候不能通话,通话的时候不能上网。
非对称数字用户线路,提供上下行不对称的传输带宽。
路由器:以太网口连接局域网,串口连接其他路由器
猫:调试解调器,进行数字信号和模拟信号的转换。
光纤入户
光猫:光调试解调器,进行数字信号和光信号的转换。
网线入户
NAT 网络地址转换
私网主要用于局域网。例如公司内部网络。公网是得到的IP地址是Internet的公有地址。公网上的计算机可以和Internet上的计算机随意相互访问。
私网IP访问Internet需要进行NAT转换为公网IP。
特点:可以解决公网IP紧缺问题;隐藏内部真实IP,具有安全性。
PAT(PORT address teanslation)端口地址转换:
1,多对一转换,最大程度上节约公网IP资源;
2,采用端口多路复用方式,通过端口标识不同的数据流;
3,目前应用最广泛的NAT实现方式。
信道
信息传输的通道,一条传输介质,如网线上可以有多条信道。
单工通信,信号只能一个方向传输:无线电广播
半双工通信:信号可以双向传输,都是必须交替进行,同一时间只能往一个方向传输,如对讲机。
全双工通信:信号可以双向传输,如手机。
数据请求过程
二、OSI七层模型
这里介绍实际环境中基础使用到的5层模型。
物理层
利用传输介质,为数据链路层提供设备的物理连接。
作用:数据传输过程中,实现相邻的计算机之间进行比特流透明传输。
数据链路层
负责建立和管理节点间的链路。在物理层提供比特流的基础上,通过差错校验,流量控制,使有差错的物理链路变为无差错的数据链路。--------提供可靠的通过物理介质传输数据的方法。
相邻设备之间数据传输。一条链路上传输数据时,需要有对应的通信协议来控制数据的传输。
不同类型的数据链路,所用的通信协议可能不同:
广播信道:CSMA/CD协议(单工通信:集线器,同轴电缆之间),带冲突检测的载波侦听多路访问
点对点信道:PPP协议(如2个路由器之间的信道)
数据链路层的3个基本问题:
封装成帧
透明传输
差错检验
1、封装成帧:IP数据包+帧开始/结束符+帧首尾部。
2、透明传输:传输过程中,不管输入设备是什么数据形式,都可以正确传输到目的地。使用转义字符进行区分部分与结束符冲突的数据,但是接收端接收到的数据还是原来发送的数据,从结果来看,是无感知的。
3、差错检验:防止数据传输中被影响的数据导致出错。
两种差错:
①比特差错:传输过程中可能产生的差错,0变成1,或1变成0
②传输差错:收到的帧没有出现比特差错,出现了真丢失,重复和帧失序。
以太网的MTU为1500字节;
以太网帧:传输在网线上的数据帧
PPP帧:两个路由器之间传输的帧。(不需要源mac和目的mac,点对点传输)
作用:提供可靠的通过物理介质传输数据的方法。解决同一网络内节点之间的通信。
网卡:
网卡接收到一个帧,会先进行差错校验(FCS),校验通过则接受,否则丢弃;
Wireshark抓到的帧没有FCS,因为它抓到的是差错校验通过的帧,FCS被网卡直接丢掉了。
Wi’re’shark抓不到差错校验失败的帧。
因此wireshark工作在数据链路层。
网络层
功能:在数据链路层的基础上,管理网络中的数据,控制数据链路层和传输层之间的数据转发,建立,维持和终止网络的连接,将数据从源端经过若干个节点传送到目的端,向传输层提供最基本的端到端的数据传输服务
解决不同子网间的通信。
网络层数据包由首部+数据组成;
标识:即ID
标识占16位,当数据包过大进行分片时,同一个数据包的所有片的标志都是一样的。
有一个计数器专门管理数据包的ID,每发出一个数据包,ID就+1
片偏移
占13位;
片偏移乘以8:字节偏移
每一片的长度一定是8的整数倍;用来辨别每个片所在的具体位置。
传输层
管理端到端的数据传输.
TCP/UDP
TCP协议:
特点:面向连接;点对点通信;可靠传输,全双工通信;面向字节流的协议。(适用于可靠传输,例如文件传输)
UDP协议:
特点:无连接;可以多对多通信;不可靠传输,没有拥塞控制;面向数据报。(适用于实时应用:视频会议,直播)
TCP传输:
1)面向连接:双方必须建立连接才能进行数据通信。
2)可靠传输:
- tcp采用发送应答机制
- 超时重传
- 错误校验
- 流量控制和阻塞管理
1.可靠性传输:
ARQ停止等待协议(四种传输情况:无差错情况,超时重传,确认丢失,确认迟到)
连续ARQ协议+滑动窗口协议:多个连续标识的数据一起传输,接收端只对最后一个数据进行确认。
即数据若丢失或是超时未收到,进行重传
2.流量控制:通过TCP的头部窗口大小来控制流量。
若此时目的主机接受窗口为0,发送方就不会再发送数据了。解决方法:搞一个定时器,每隔一段时间咨询一下接收方是否可以发送数据。
3.拥塞控制:整个网络的通信量的控制
开始通过慢启动算法发送数据量成指数型增长,到达启动阈值,改为加法增长。此时若到达拥塞峰值,则重新从慢启动开始发数据。一直循环指导数据发送完成。
TCP的三次握手
ChatGPT
TCP三次握手是建立TCP连接的过程,它由客户端和服务器之间的三个步骤组成,具体如下:
1.客户端向服务器发送一个SYN(同步)包,其中包含一个随机生成的初始序列号(ISN)。
2.服务器收到SYN包后,回复一个SYN-ACK(同步-确认)包,其中包含确认号(ACK)和服务器的初始序列号。
3.客户端收到服务器的SYN-ACK包后,再发送一个ACK(确认)包,其中包含确认号,表示客户端已经准备好建立连接。
这样,TCP连接就建立成功了,客户端和服务器可以开始进行数据传输了。需要注意的是,在第一次握手时,客户端向服务器发送SYN包,服务器回复SYN-ACK包,这时候连接还没有完全建立,因为客户端还需要发送一个ACK包确认。因此,TCP三次握手是必须的,它可以保证连接的可靠性和正确性。
四次挥手
TCP四次挥手是指TCP连接的关闭过程,它由四个步骤组成。下面是每个步骤的简要描述:
第一次挥手(FIN):客户端发送一个FIN报文,用于关闭客户端到服务器的数据传输。
第二次挥手(ACK):服务器收到FIN报文后,发送一个ACK报文确认收到了客户端的关闭请求。
第三次挥手(FIN):服务器发送一个FIN报文,用于关闭服务器到客户端的数据传输。
第四次挥手(ACK):客户端收到服务器的FIN报文后,发送一个ACK报文确认收到了服务器的关闭请求。
在这个过程中,每个报文都需要对方确认收到。这是因为TCP是一个可靠的协议,它保证了数据传输的可靠性和有序性。四次挥手的过程确保了双方都关闭了连接,并且没有任何数据丢失。
需要注意的是,如果在四次挥手过程中出现任何一个报文丢失或超时,那么TCP连接将会一直保持打开状态,直到超时时间到达。因此,四次挥手的过程需要非常谨慎和可靠。
应用层
直接给用户提供服务。
作用:文件传输、管理,电子邮件,远程操作等。
DNS :域名系统
DNS解析原理
解说:(前提:本地浏览器和操作系统中,没有相关消息缓存记录的情况下。)
1、客户端先向local DNS发出请求,若local DNS中没有客户端要的数据记录,那么此时,local DNS会向根 dns请求
2、若根DNS 中有local DNS请求的数据,则直接返回数据;若没有,则将返回查询到的子域名DNS;
3、此时local DNS根据根DNS返回的线索,向com DNS发出查找请求。若com DNS中有相关记录,则直接返回给local DNS;若没有,则返回下级DNS;
4、此时若下级DNS中有记录,直接返回数据给local;若无数据,则返回local DNS二级DNS信息;一直循环直到最终查询到记录为止。
递归查询和迭代查询的区别
HTTP/HTTPS
HTTP (hyper text transfer protocol)超文本传输协议,规定了浏览器和服务器之间的通信规则。
特点如下:
简单快速:客户端向服务器请求数据时只需要提交请求路径与请求方法,
灵活:允许传输任意类型的数据,由context-type标记;
无连接:限制每次连接只处理一个请求,服务器处理完请求,并收到客户地应答后,就立马断开连接。
无状态:协议处理事务没有记忆。
工作流程:
- 浏览器分析URL
- 浏览器向DNS请求解析IP地址
- DNS解析出IP地址
- 浏览器与服务器建立TCP连接(3次握手)
- 浏览器发出HTTP请求
- 服务器通过HTTP响应把文件数据发送给浏览器
- 释放TCP连接(四次挥手)
- 浏览器解析文件数据,并将其通过页面展示给用户
https=http+ssl , 默认端口443
通信过程:
http和https的差异
- 安全性:http 明文传输,安全存在隐患;https时使用TLS/SSL加密的。密文传输,安全性高。
- 证书:http无证书;https依靠证书验证服务器身份,并对通信数据加密。
- 端口:http端口默认80,工作在OSI模型的应用层;https端口默认443 工作在传输层;
- 连接:http 3次握手,四次挥手;https在此基础之前增加了ssl 连接
参见:https://blog.csdn.net/JAck_chen0309/article/details/105020259?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162838609216780269858503%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=162838609216780269858503&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2alltop_positive~default-1-105020259.first_rank_v2_pc_rank_v29&utm_term=http%E5%92%8Chttps%E7%9A%84%E5%8C%BA%E5%88%AB&spm=1018.2226.3001.4187
http的方法区别
- GET在浏览器回退不会再次请求;POST会再次提交请求
- GET请求会被浏览器主动缓存;POST不会,需要手动设置
- GET请求参数会完整被放到浏览器的url上,或者历史记录中;POST中的参数不会
- GET请求参数由于浏览器显示,因此长度是有限制的;POST没有限制,并且post支持文件类参数等
- GET参数暴露在浏览器中,不安全,POST放在报文内部更安全
- GET参数通过URL传递;POST放在request body中
- GET一般用于查询信息,POST一般用于提交信息
- GET产生一个TCP数据包;POST产生两个TCP数据包
常见状态码介绍
1xx :continue
2xx :请求成功
3xx:重定向
301:永久重定向;302临时重定向;304 not modify(当客户端已向server请求过,并且本地有该请求的数据缓存,此时Server就会返回304)
4xx:客户端出现问题
5xx:服务器出现问题
密钥
MD5和SHA是不可逆加密。
对称和非对称加密是可逆的。
对称加密
DES(Data Encryption Standard) :加密和解密时同一个密钥。
DES每次加密只能加密64bit,如果数据过大,需要迭代加密。
3DES,即将DES重复3次所得到的一种密码算法(加密->解密->加密的过程,3把密钥不一样),处理速度不高。
AES(Advanced Encryption Standard) 高级加密算法。安全等级比DES高。
作用:对传输的信息进行加密,防止非法窃听者盗取信息。
非对称加密
Asymmetric Cryptography 加密和解密不是同一个密钥。加密密钥是公钥,解密密钥是私钥。反之,私钥也可以用来加密。
公钥和私钥是一一对应的。一个公钥加密的数据,必须要是它的对应的私钥进行解密才行。
非对称加密RSA加密解密的速度比较慢,效率低。
解决密钥运输问题:
通过非对称加密将这个密钥进行运输。例如A要发数据给B,B将自己的公钥发送给A,A使用该公钥将对称密钥进行加密,传输给B,B通过自己的私钥对其进行解密,后续信息传输直接用对称密钥加密即可。
混合密码
会话密钥是随机生成的临时密钥。
最终接收方使用自己的私钥将公钥解密出来再看消息,后续数据都直接使用对称加密即可。加密解密速度快,效率高。
数字签名的作用仅仅是为了识别自己发送的消息是否有被篡改:
1.确认消息的完整性
2.识别消息是否有被篡改
3.防止消息发送人否认。
证书
公钥证书,具有权威性
ICMP协议
ICMP主要用于返回错误信息。比如:TTL值过期,目的机不可达。它判断的错误信息总是包括了源数据并返回给发送者。
例如ping使用的就是ICMP协议
FTP协议
文件传输服务协议
两种连接模式:主动和被动;不管是哪种模式,都需要客户端和服务器建立2个连接。
①控制连接:用于传输状态信息(cmd)
②数据链接:用于传输文件和目录信息(data)
邮件相关协议
SMTP,简单邮件传输协议:基于TCP协议,服务器默认端口25,SSL/TLS使用465端口
POP收邮件的协议:服务器默认端口110,ssl/tls使用995端口;IMAP也是用来收邮件的协议。
pop和IMAP区别:
pop:客户端连接服务端时,会下载服务端的所有邮件。
客户端和服务器之间是分开的,客户端的操作不会影响到服务器上的邮件。每个客户端都是独立的。
IMAP:客户端连接服务器,获取的是服务器上邮件的基本信息,不会下载邮件,打开邮件时,才会开始下载。
客户端和服务端的操作是可以同步操作的。可以允许删除服务器的东西。
所有客户端会看到相同的邮件和文件夹。
邮件传输过程:
VPN
Virtual Private Network 虚拟私人网络。客户端上需要安装规定的VPN软件。
可以在公共网络上建立专用网络,并进行加密通讯。
优点:
1、提高上网安全性
2、保护公司内部资料
3、隐藏上网者身份
4、突破网站的地域限制
5、突破网络封锁
中国长城防火墙(GFW)的限制,部分网站国内上不了。
网络爬虫
python 的 scrapy库