网络协议
2024-03-04 09:36:36 0 举报
AI智能生成
网络协议是计算机网络中,为进行数据交换而建立的规则、标准或约定的集合。它定义了计算机之间如何通过网络进行通信,包括数据的格式、编码方式、传输方式以及处理错误的方法等。常见的网络协议有TCP/IP、HTTP、FTP、SMTP等。TCP/IP是互联网的基础协议,它定义了数据如何在网络中传输;HTTP是用于浏览器和服务器之间传输超文本的协议;FTP是用于文件传输的协议;SMTP是用于电子邮件传输的协议。网络协议的存在使得不同的计算机系统能够互相理解和交流,从而实现了全球范围内的信息共享和数据传输。
作者其他创作
大纲/内容
网络模型
七层网络模型
四层网络模型
五层网络模型
数据包
包
全能型术语
帧
用于表示数据链层中包的单位
片
IP中数据的单位
段
TCP数据流中的信息
消息
应用协议中数据的单位
以太网
一种计算机局域网技术
ARP协议
(地址解析协议)
(地址解析协议)
在以太网环境中,数据的传输所依懒的是MAC地址而非IP地址,而将已知IP地址转换为MAC地址的工作是由ARP协议来完成的。
ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。
IP协议
TCP/IP协议族
TCP 能够确保连接的建立和数据包的发送
TCP 支持错误重传机制
TCP 支持拥塞控制,能够在网络拥堵的情况下延迟发送
TCP 能够提供错误校验和甄别有害的数据包。
TCP 支持错误重传机制
TCP 支持拥塞控制,能够在网络拥堵的情况下延迟发送
TCP 能够提供错误校验和甄别有害的数据包。
三次握手
小明(客户端)-小红(服务端)
1.小明给小红打电话,接通了后,小明说喂,能听到吗,这就相当于是连接建立。
2.小红给小明回应,能听到,你能听到我说的话吗,这就相当于是请求响应。
3.小明听到小红的回应后,好的,这相当于是连接确认。在这之后小明和小红就可以通话/交换信息了。
1.小明给小红打电话,接通了后,小明说喂,能听到吗,这就相当于是连接建立。
2.小红给小明回应,能听到,你能听到我说的话吗,这就相当于是请求响应。
3.小明听到小红的回应后,好的,这相当于是连接确认。在这之后小明和小红就可以通话/交换信息了。
1.客户端将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给服务器端,客户端进入SYN_SENT状态,等待服务器端确认。
2.服务器端收到数据包后由标志位SYN=1知道客户端请求建立连接,服务器端将标志位SYN和ACK都置为1,ack=J+1,随机产生一个值seq=K,并将该数据包发送给客户端以确认连接请求,服务器端进入SYN_RCVD状态。
3.客户端收到确认后,检查ack是否为J+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=K+1,并将该数据包发送给服务器端,服务器端检查ack是否为K+1,ACK是否为1,如果正确则连接建立成功,客户端和服务器端进入ESTABLISHED状态,完成三次握手,随后客户端与服务器端之间可以开始传输数据了。
2.服务器端收到数据包后由标志位SYN=1知道客户端请求建立连接,服务器端将标志位SYN和ACK都置为1,ack=J+1,随机产生一个值seq=K,并将该数据包发送给客户端以确认连接请求,服务器端进入SYN_RCVD状态。
3.客户端收到确认后,检查ack是否为J+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=K+1,并将该数据包发送给服务器端,服务器端检查ack是否为K+1,ACK是否为1,如果正确则连接建立成功,客户端和服务器端进入ESTABLISHED状态,完成三次握手,随后客户端与服务器端之间可以开始传输数据了。
四次挥手
小明(客户端)-小红(服务端)
1.小明对小红说,我所有的东西都说完了,我要挂电话了。
2.小红说,收到,我这边还有一些东西没说。
3.经过若干秒后,小红也说完了,小红说,我说完了,现在可以挂断了
4.小明收到消息后,又等了若干时间后,挂断了电话。
1.小明对小红说,我所有的东西都说完了,我要挂电话了。
2.小红说,收到,我这边还有一些东西没说。
3.经过若干秒后,小红也说完了,小红说,我说完了,现在可以挂断了
4.小明收到消息后,又等了若干时间后,挂断了电话。
1. 客户端进程发出连接释放报文,并且停止发送数据。释放数据报文首部,FIN=1,其序列号为seq=u(等于前面已经传送过来的数据的最后一个字节的序号加1),此时,客户端进入FIN-WAIT-1(终止等待1)状态。 TCP规定,FIN报文段即使不携带数据,也要消耗一个序号。
2. 服务器收到连接释放报文,发出确认报文,ACK=1,ack=u+1,并且带上自己的序列号seq=v,此时,服务端就进入了CLOSE-WAIT(关闭等待)状态。TCP服务器通知高层的应用进程,客户端向服务器的方向就释放了,这时候处于半关闭状态,即客户端已经没有数据要发送了,但是服务器若发送数据,客户端依然要接受。这个状态还要持续一段时间,也就是整个CLOSE-WAIT状态持续的时间。
3. 客户端收到服务器的确认请求后,此时,客户端就进入FIN-WAIT-2(终止等待2)状态,等待服务器发送连接释放报文(在这之前还需要接受服务器发送的最后的数据)。
4. 服务器将最后的数据发送完毕后,就向客户端发送连接释放报文,FIN=1,ack=u+1,由于在半关闭状态,服务器很可能又发送了一些数据,假定此时的序列号为seq=w,此时,服务器就进入了LAST-ACK(最后确认)状态,等待客户端的确认。
5. 客户端收到服务器的连接释放报文后,必须发出确认,ACK=1,ack=w+1,而自己的序列号是seq=u+1,此时,客户端就进入了TIME-WAIT(时间等待)状态。注意此时TCP连接还没有释放,必须经过2∗∗MSL(最长报文段寿命)的时间后,当客户端撤销相应的TCB后,才进入CLOSED状态。
6. 服务器只要收到了客户端发出的确认,立即进入CLOSED状态。同样,撤销TCB后,就结束了这次的TCP连接。可以看到,服务器结束TCP连接的时间要比客户端早一些。
2. 服务器收到连接释放报文,发出确认报文,ACK=1,ack=u+1,并且带上自己的序列号seq=v,此时,服务端就进入了CLOSE-WAIT(关闭等待)状态。TCP服务器通知高层的应用进程,客户端向服务器的方向就释放了,这时候处于半关闭状态,即客户端已经没有数据要发送了,但是服务器若发送数据,客户端依然要接受。这个状态还要持续一段时间,也就是整个CLOSE-WAIT状态持续的时间。
3. 客户端收到服务器的确认请求后,此时,客户端就进入FIN-WAIT-2(终止等待2)状态,等待服务器发送连接释放报文(在这之前还需要接受服务器发送的最后的数据)。
4. 服务器将最后的数据发送完毕后,就向客户端发送连接释放报文,FIN=1,ack=u+1,由于在半关闭状态,服务器很可能又发送了一些数据,假定此时的序列号为seq=w,此时,服务器就进入了LAST-ACK(最后确认)状态,等待客户端的确认。
5. 客户端收到服务器的连接释放报文后,必须发出确认,ACK=1,ack=w+1,而自己的序列号是seq=u+1,此时,客户端就进入了TIME-WAIT(时间等待)状态。注意此时TCP连接还没有释放,必须经过2∗∗MSL(最长报文段寿命)的时间后,当客户端撤销相应的TCB后,才进入CLOSED状态。
6. 服务器只要收到了客户端发出的确认,立即进入CLOSED状态。同样,撤销TCB后,就结束了这次的TCP连接。可以看到,服务器结束TCP连接的时间要比客户端早一些。
基础概念
Http
无状态
每次请求完就断开通讯,下一次请求又是一个新的连接通讯。任何请求之间无关联
优点:节省网络传输时间
cookie技术
无状态的补充
1.0/1.1/2.0比较
1.0
HTTP 1.0 仅仅提供了最基本的认证,这时候用户名和密码还未经加密,因此很容易收到窥探。
HTTP 1.0 被设计用来使用短链接,即每次发送数据都会经过 TCP 的三次握手和四次挥手,效率比较低。
HTTP 1.0 只使用 header 中的 If-Modified-Since 和 Expires 作为缓存失效的标准。
HTTP 1.0 不支持断点续传,也就是说,每次都会传送全部的页面和数据。
HTTP 1.0 认为每台计算机只能绑定一个 IP,所以请求消息中的 URL 并没有传递主机名(hostname)。
HTTP 1.0 被设计用来使用短链接,即每次发送数据都会经过 TCP 的三次握手和四次挥手,效率比较低。
HTTP 1.0 只使用 header 中的 If-Modified-Since 和 Expires 作为缓存失效的标准。
HTTP 1.0 不支持断点续传,也就是说,每次都会传送全部的页面和数据。
HTTP 1.0 认为每台计算机只能绑定一个 IP,所以请求消息中的 URL 并没有传递主机名(hostname)。
1.1
HTTP 1.1 使用了摘要算法来进行身份验证
HTTP 1.1 默认使用长连接,长连接就是只需一次建立就可以传输多次数据,传输完成后,只需要一次切断连接即可。
长连接的连接时长可以通过请求头中的 keep-alive 来设置
HTTP 1.1 中新增加了 E-tag,If-Unmodified-Since, If-Match, If-None-Match 等缓存控制标头来控制缓存失效。
HTTP 1.1 支持断点续传,通过使用请求头中的 Range 来实现。
HTTP 1.1 使用了虚拟网络,在一台物理服务器上可以存在多个虚拟主机(Multi-homed Web Servers),并且它们共享一个IP地址。
HTTP 1.1 默认使用长连接,长连接就是只需一次建立就可以传输多次数据,传输完成后,只需要一次切断连接即可。
长连接的连接时长可以通过请求头中的 keep-alive 来设置
HTTP 1.1 中新增加了 E-tag,If-Unmodified-Since, If-Match, If-None-Match 等缓存控制标头来控制缓存失效。
HTTP 1.1 支持断点续传,通过使用请求头中的 Range 来实现。
HTTP 1.1 使用了虚拟网络,在一台物理服务器上可以存在多个虚拟主机(Multi-homed Web Servers),并且它们共享一个IP地址。
2.0
头部压缩,由于 HTTP 1.1 经常会出现 User-Agent、Cookie、Accept、Server、Range 等字段可能会占用几百甚至几千字节,而 Body 却经常只有几十字节,所以导致头部偏重。HTTP 2.0 使用 HPACK 算法进行压缩。
二进制格式,HTTP 2.0 使用了更加靠近 TCP/IP 的二进制格式,而抛弃了 ASCII 码,提升了解析效率
强化安全,由于安全已经成为重中之重,所以 HTTP2.0 一般都跑在 HTTPS 上。
多路复用,即每一个请求都是用作连接共享。一个请求对应一个id,这样一个连接上可以有多个请求。
二进制格式,HTTP 2.0 使用了更加靠近 TCP/IP 的二进制格式,而抛弃了 ASCII 码,提升了解析效率
强化安全,由于安全已经成为重中之重,所以 HTTP2.0 一般都跑在 HTTPS 上。
多路复用,即每一个请求都是用作连接共享。一个请求对应一个id,这样一个连接上可以有多个请求。
Https
密码学基础
明文
密文
密钥
对称密钥-对称加密
非对称密钥-非对称加密
对称加密
特点
是算法公开、
加密和解密速度快,
适合于对大数据量进行加密
加密和解密速度快,
适合于对大数据量进行加密
常见算法
DES、3DES、TDEA、Blowfish、RC5和IDEA
缺点
加密的算法是公开的,所以一旦私钥被泄露,那么密文就很容易被破解
非对称加密
缺点
加密和解密花费时间长、
速度慢,
只适合对少量数据进行加密
速度慢,
只适合对少量数据进行加密
常见算法
RSA、Elgamal、Rabin、D-H、ECC(椭圆曲线加密算法)等
https协议=http协议+SSL/TLS协议
使用SSL/TLS对数据进行加密/解密,使用HTTP对加密后的数据进行传输
一个HTTPS请求实际包含两次HTTP传输
1.生成对称密钥
1.1 客户端发向服务端发起HTTPS请求
1.2 服务端有一个非对称加密密钥对,服务端自己保存私钥(A1),将公钥(A2)发送给客户端
1.3 客户端生成对称加密密钥(B)
1.4 客户端使用服务端返回的公钥(A2)加密生成的对称加密密钥(B)发送至服务端
1.5 服务端使用私钥(A1)解密客服端发送过来的被客户端使用公钥(A2)加密的对称加密密钥(B),获取客户端生成的对称加密密钥(B)
2.业务数据传输
客户端和服务端使用对称加密密钥(B)加密数据进行传输
websocket
UDP
用户数据报协议
用户数据报协议
UDP 能够支持容忍数据包丢失的带宽密集型应用程序
UDP 具有低延迟的特点
UDP 能够发送大量的数据包
UDP 能够允许 DNS 查找,DNS 是建立在 UDP 之上的应用层协议。
UDP 具有低延迟的特点
UDP 能够发送大量的数据包
UDP 能够允许 DNS 查找,DNS 是建立在 UDP 之上的应用层协议。
单播
广播
SCTP
(流控制传输协议)
(流控制传输协议)
两台计算机之间的数据是如何传输的(A——>B)
1.A输入域名
2.通过DHCP服务(或者本机配置的host等)解析域名,获取IP(IP地址分网络部分和主机部分)
2.获取B服务MAC地址
2.1 通过IP协议找到对应的子网
2.2 通过ARP协议,广播给同一子网下的所有服务(B\C\D\E....),请求获取B服务的MAC地址
2.3 B\C\D\E等服务匹配IP地址,匹配成功则返回自己的MAC地址,否则不响应(B做出应答返回自己的MAC)
3.数据传输
3.1 通过IP地址在同一子网下广播数据
3.2 同一子网下的BCDE等服务与自己MAC地址做对比,匹配则接收数据(B服务匹配MAC地址成功)
刨根问底
有了 IP 地址,为什么还要用 MAC 地址?
0 条评论
下一页