能者先赏 ♪(´▽`),方便大家理解~!
汇总~
- 🌇网络协议(概念)
- 🌃TCP/IP网络模型 (建议先看)
- 🌑应用层协议(第七层)
- DNS (域名系统:Domain Name System)
- mDNS (组播域名系统:Multicast Domain Name System)
- FTP (文件传输协议:File Transfer Protocol)
- HTTP (超文本传输协议:HyperText Transfer Protocol)
- HTTPS (超文本传输安全协议:Hyper Text Transfer Protocol over SecureSocket Layer)
- SMTP (简单邮件传输协议:Simple Mail Transfer Protocol)
- POP3 (邮局协议版本3:Post Office Protocol - Version 3)
- IMAP4 (因特网信息存取协议4:(Internet Message Access Protocol 4)
- RDP (远程桌面协议:Remote Desktop Protocol)
- SIP (会话初始协议:Session initialization Protocol)
- SNMP (简单网络管理协议:Simple network management protocol)
- SSH (安全外壳协议:Secure Shell)
- Telnet (TCP/IP终端仿真协议)
- 🌒表示层协议(第六层)
- 🌓会话层协议(第五层)
- 🌔传输层通信协议(第四层)
- 🌕网络层协议(第三层)
- 🌖数据链路层协议(第二层)
- 🌠其他协议(如:路由器、家庭管理等)
- 🌠其他协议 - 路由器协议
🌇网络协议(概念)
//1.网络协议简介
📖 简介
- 是通信计算机双方必须共同遵从的一组约定。
- 例如,怎么探测到通信目标、由哪一边先发起通信、使用哪种语言进行通信、怎样结束通信等规则都需要事先确定。
- 不同的硬件、操作系统之间的通信,都需要一种规则,也就是协议。
👌 三要素
- 语法:即数据与控制信息的结构或格式。
- 语义:即需要发出何种控制信息,完成何种动作以及做出何种响应。
- 时序(同步),即事件实现顺序的详细说明。
//1.SOCKS5
📖 简介
- 是一个代理协议,位于传输层和应用层之间。
- 它在使用 TCP/IP 协议通讯的前端机器和服务器机器之间扮演一个中介角色,使得内部网中的前端机器能够访问 Internet 网中的服务器,或者使通讯更安全。
- 前端将原本要发送给服务器的请求发送给 SOCKS5 服务器,然后 SOCKS5 服务器将请求转发给真正的服务器。在这里,前端和 SOCKS5 之间也是通过 TCP/IP 协议进行通讯。
//2.Socket
📖 简介
- 是应用层与 TCP/IP 协议族通信的中间软件抽象层,是一组接口,可以让不同程序间进行进程通讯。
- 设计中,它把 TCP/IP 隐藏在接口后面,对用户来说,接口就是全部,让 Socket 去组织数据,以符合指定的协议。
🌃TCP/IP网络模型 (建议先看)
//1.TCP/IP网络模型简介
📖 简介
- 是互联网的基础,也是互联网相关的各类协议族的总称。
- 使用点对点(PointtoPoint)连接进行数据传输。
🍉 概念层(从第四层(最高层)开始)
- 应用层:负责向用户提供应用程序。
- 传输层:负责对报文进行分组和重组,并以 TCP 或 UDP 协议格式封装报文。
- 网络层:负责路由,以及把分组报文发送给目标网络或主机。
- 链路层:负责封装和解封装 IP 报文,发送和接受 ARP/RARP 报文等。
- 封装:应用层(应用层数据) -> 传输层(加上 TCP 头) -> 网络层(加上 IP 头) -> 链路层(加上帧头)
//2.OSI (开放式系统互连:Open System Interconnect)
📖 简介
- 是一个具有七层结构的体系模型。
- 除了物理层外,不同主机之间的相同层次被称为对等层,且之间存在协议关系。
- 每一层实体为相邻的上一层实体提供的通信功能称为服务。N层实体利用N-1层实体所提供的服务,向N+I层实体提供功能更强大的服务。
🔶 OSI 七层模型(从第七层(最高层)开始)
- 应用层:应用程序协议,如文件传输,电子邮件,文件服务,虚拟终端。(如 HTTP)
- 表示层:信息的语法语义化及关联,如数据格式化,代码转换,数据加密。(如 LPP)
- 会话层:解除或建立与其他用户的联系(会话)。(如 RDP、SSH)
- 传输层:接收上层数据传给网络层,必要时分割,并保证有效到达对端。(如 TCP、UDP、SCTP)
- 网络层:控制子网运行,如逻辑编址、选择路由。(如 IP)
- 数据链路层:物理寻址,同时将原始比特流转为逻辑传输线路。(如 ARP)
- 物理层:以二进制数据形式在物理媒体上传输数据。(如 ISO 2110、IEEE 802、IEEE 802.2、Ethernet v.2、Internetwork)
🎢 过程
- 发送端:从上到下(应用层到物理层)。
- 接收端:从下到上(物理层到应用层)。
🌑应用层协议(第七层)
DNS (域名系统:Domain Name System)
//1.DNS简介
📖 简介
- 也称 uDNS(单播 DNS),是互联网的一项服务。
- 网站会将用户输入的网址发给 DNS 服务器,DNS 将网址解析成对应 IP 并返回给网站,网站再访问对应 IP。
- 作为将域名和 IP 地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。
🥥 端口
- 53tcp/udp
✨ 解析方式
- 正向解析(A):解析域名为 IP。
- 逆向解析(PTR):解析 IP 为域名。
🚐 浏览器根据访问的域名找到其 IP 地址的 DNS 查找过程
- 浏览器缓存:首先搜索浏览器自身的 DNS 缓存(时间较短,大概只有1分钟,且只能容纳1000条缓存),看自身的缓存中是否是有域名对应的条目,而且没有过期,如果有且没有过期则解析到此结束。
- 系统域名:如果浏览器自身的缓存没有找到,那么浏览器会搜索操作系统自身的 DNS 缓存,如果找到且没有过期则停止搜索解析到此结束。
- 路由器缓存:如果系统缓存也没有找到,则会向路由器发送查询请求。
- ISP (互联网服务提供商) DNS缓存:最后会在 ISP 缓存 DNS 的服务器里查。
//2.域名
📨 作用
- 是 Internet 上某一台计算机或计算机组的名称,由一串用点分隔的名字组成(例 www.baidu.com)。
- 用于在数据传输时对计算机的定位标识(有时也指地理位置)。
- 由于 IP 地址具有不方便记忆并且不能显示地址组织的名称和性质等缺点,人们设计出了域名,并通过网域名称系统(DNS)来将域名和 IP 地址相互映射,使人更方便地访问互联网,而不用去记住能够被机器直接读取的IP地址数串。
- 对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。
mDNS (组播域名系统:Multicast Domain Name System)
//1.mDNS简介
📖 简介
- 是组播 DNS,可在没有 DNS 的环境当中让相同网段里的设备互相通信,与 NetBIOS(很古老) 类似。
- 同样是工作在 IP 层面,由于它只是 DNS 的延伸,所以这也决定了它用起来和 DNS 基本相同。不同点是它不请求 DNS 服务器,而是在局域网内广播,所有支持组播 DNS 的设备都会回复它自己的域名(一个以 .local 为结尾的机器名),如果没有指定自身机器名或者有冲突,那么新设备就会换个名字继续广播,直到名字可用,且被其他设备所接受。
🥥 端口
- 5353udp
FTP (文件传输协议:File Transfer Protocol)
//1.FTP简介
📖 简介
- 是用于在网络上进行文件传输的一套标准协议。
- 使用 TCP 传输。
- 允许用户以文件操作的方式与另一主机相互通信,并不登录成为完全用户。
- 可用 FTP 程序访问远程资源,往返传输文件、目录管理以及访问电子邮件等等,即使双方计算机是不同的操作系统和文件存储方式。
🥥 端口
- 20tcp 和 21tcp,其中 20 用于传输数据,21 用于传输控制信息。
HTTP (超文本传输协议:HyperText Transfer Protocol)
//1.HTTP简介
📖 简介
- 是因特网上应用最为广泛的网络传输协议。
- 基于 TCP/IP 通信协议来传输数据(HTML文件,图片文件,查询结果等)。
🥥 端口
- 80tcp,81tcp(预备),8080tcp(替代端口)
🧦 版本
- 格式:HTTP/主版本号.次版本号
- 常用有 HTTP/1.0 和 HTTP/1.1。
//1.HTTP请求过程
🎢 过程
- 1.浏览器根据域名解析 IP 地址。
- 2.浏览器与 WEB 服务器建立一个 TCP 连接。
- 3.浏览器给 WEB 服务器发送一个 HTTP 请求。
- 4.服务器端响应 HTTP 请求,浏览器得到 HTML 代码。
- 5.浏览器解析 HTML 代码,并请求 HTML 代码中的资源。
- 6.关闭 TCP 连接,浏览器对页面进行渲染呈现给用户。
//2.HTTP请求方式
🏳🌈 方式
- get(select):一般只从服务器获取数据,并不会对资源造成影响时使用。
- post(create):向服务器发送数据、上传文件等,会对资源产生影响时使用。
- head:类似于 get 请求,只不过返回没有响应主体,用于获取报头。
- put(update):从客户端向服务器传送的数据取代指定的文档的内容。
- delete(delete):请求服务器删除指定的页面。
- connect:HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
- options:允许客户端查看服务器的性能。
- trace:回显服务器收到的请求,主要用于测试或诊断。
- patch:对某个资源做部分修改。
🏸 GET
- 客户端从服务器中读取文档,点击链接或者通过地址栏输入网址来浏览网页的,使用的都是GET方式。
- 会要求服务器将URL定位的资源放在响应报文的数据部分,送给客户端。
- 传递的数据直接放在地址中。由于不同浏览器对地址的字符限制也有所不同,一般最多只能识别1024分字符,所以GET方式的请求一般不包含"请求内容"的部分。
- 使用时,请求参数和对应的值附加在URL后面,利用一个问号’?‘代表URL的结尾与请求参数的开始,各个数据(参数)用’&'符号隔开。
- 数据:"英文字母"或"数字"原样发送,"空格"转换为+,字符用BASE64加密,例:%E4%BD%A0%,其中%XX的XX为该符号以16进制表示的ASCII
🎾 POST
- 对传输的数据大小没有限制,且不会显示在URL中。
- 不会被缓存,不会保留在浏览器历史记录中,不会被收藏为书签
- POST方法将请求参数封装在HTTP请求数据中,以名称/值的形式出现。
- 数据不包含字符串,这些数据保存在"请求内容"部分,各数据之间也是使用’&'符号隔开。
//3.HTTP请求报文
📨 作用
- 客户端用来请求服务端。
- 由"请求行"、“请求头部”、"空行"和"请求数据"组成。
🥔 请求行
- 分为三个部分:请求方法、请求地址 URL 和 HTTP 协议版本。
- 格式例:GET /index.html HTTP/1.1
🥕 请求头部
- 为请求报文添加了一些附加信息,由"名: 值"对组成,每行一对。
- 最后会有一个空行,表示请求头部结束,接下来为请求数据。
- Host:接受请求的服务器地址,可以是IP:端口号,也可以是域名。
- User-Agent:发送请求的应用程序(浏览器)名称。
- Connection:指定此次请求的连接方式。
- Accept-Charset:通知服务端可以发送的编码格式。
- Accept-Encoding:通知服务端可以发送的数据压缩格式。
- Accept-Language:通知服务端可以发送的语言。
- Referer:引用,表明这个请求是从哪个URL过来的。
- Cookie:状态保持,服务器无法判断两个请求是否来自同一个人,需用 Cookie 来做标识。是 Web 服务器保存在客户端的一系列文本信息。
- User-Agent的格式例:User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.72 Safari/537.36 Edg/90.0.818.42
🍊 请求数据
- 不在 GET 方法中使用,而在 POST 方法中使用。
- 与请求数据相关的最长使用的请求头部是 Content-Type 和 Content-Length。
- 格式例:username=aa&password=1234
🍎 Connection
- 长连接(http1.1默认),指一个连接可以连续发多个数据包,在连接保持期间,如果没有数据包发送,需双方发链路检测包(优点:稳定安全,缺点:损耗较多资源)。常用于操作频繁,点对点的通讯,如 数据库的连接:keep-alive
- 短连接(http1.0默认),指数据传输时,只在需发数据时建立一个连接,数据发完则断开,即每次连接只完成一项业务的发送(优点:节省通道,缺点:连接建立开销大)。常用于 web 网站的 http 服务:close
- 表示用该请求建立 websocket 长连接:Upgrade
🍋 Cookie
- 作用:通常服务器用来判断两个请求是否来自同一个人。
- 格式:Set-Cookie: NAME=VALUE; Expires/Max-age=DATE; Path=PATH; Domain=DOMAIN_NAME; SECURE
- NAME:名字
- VALUE:值
- Expires:过期时间
- Path:作用的路径
- Domain:作用的域名
- SECURE:是否只在https协议下起作用
//4.HTTP响应报文
📨 作用
- 服务端响应给客户端的信息。
- 由"状态行"、“响应头部”、"空行"和"响应数据"组成。
🍐 状态行
- 分为三个部分:HTTP 协议版本、状态码、状态码扫描。其中协议版本与请求报文一致,状态码描述是对状态码的简单描述。
🍍 响应头部
- Server:服务器应用程序软件的名称和版本。
- Content-Type:响应正文的类型(是图片还是二进制字符串)。
- Content-Length:响应正文长度。
- Content-Charset:响应正文使用的编码。
- Content-Encoding:响应正文使用的数据压缩格式。
- Content-Language:响应正文使用的语言。
🍈 响应数据
- 用于存储需要返回给客户端的数据信息。
🍭 状态码
- 1xx处理中 2xx成功 3xx需附加操作 4xx客户端错误 5xx服务器错误。
- 100:继续,客户端应继续其请求。
- 101:切换协议,服务器只能根据客户端切换到更高级的协议。
- 200:请求正常,服务器正常的返回数据。
- 201:已创建,成功请求并创建了新的资源。
- 202:已经接收请求,但未处理完成。
- 203:非授权信息,请求成功,但返回的 meta 信息是一个副本。
- 204:服务器处理成功,但未返回内容。
- 206:服务器处理了部分 GET 请求。
- 301:永久重定向,资源被转移了,请求将被重定向,比如访问www.jingdong.com 会定向到 www.jd.com。
- 302:临时重定向,通知客户端 资源能在其他地方找到,但是要使用GET来获取,比如访问需登录的页面,此时没有登录,那么会重定向到登录页面。
- 304:表示被申请的资源没有更新,和之前获得的相同。
- 307:通知客户端 资源能在其他地方找到。与 302 不同的是,客户端可以使用和原始请求相同的请求方法来访问目标资源。
- 400:请求的URL在服务器上找不到。
- 401:请求需要认证信息。
- 403:服务器拒绝访问,权限不够。
- 404:请求的URL不存在。
- 405:请求方式无法用于请求相应的资源。
- 407:客户端需要先获得代理服务器的认证。
- 500:服务器内部错误,可能是服务器出现 bug 了。
- 501:尚未实施,服务器不具备完成请求的功能。
- 502:错误网关,服务器作为网关或代理,从上游服务器收到无效响应。
- 503:暂时无法访问服务器。
- 504:网关超时,服务器作为网关或代理,但是没有及时从上游收到请求。
- 505:HTTP版本不受支持,服务器不支持请求中所用的HTTP协议版本。
HTTPS (超文本传输安全协议:Hyper Text Transfer Protocol over SecureSocket Layer)
//1.HTTPS简介
📖 简介
- 是 HTTP 协议的加密版本。
- 在 HTTP 的基础上通过传输加密和身份认证保证了传输过程的安全性,加入了 TLS 和 SSL 层协议。
🥥 端口
- 443tcp
SMTP (简单邮件传输协议:Simple Mail Transfer Protocol)
//1.SMTP简介
📖 简介
- 是一种提供可靠且有效的电子邮件传输的协议。
- 建立在 FTP 文件传输服务上的一种邮件服务,主要用于系统之间的邮件信息传递,并提供有关来信的通知。
- 独立于特定的传输子系统,且只需要可靠有序的数据流信道支持,SMTP 的重要特性之一是其能跨越网络传输邮件,即"SMTP邮件中继"。
- 使用 SMTP,可实现相同网络处理进程之间的邮件传输,也可通过中继器或网关实现某处理进程与其他网络之间的邮件传输。
- 配合 POP3 或 IMAP 协议。
🥥 端口
- 25tcp/udp,366tcp/udp(On-Demand Mail Relay),465tcp(SSL加密),587(邮件提交),
POP3 (邮局协议版本3:Post Office Protocol - Version 3)
//1.POP3简介
📖 简介
- 是 TCP/IP 协议族中的一员,由 RFC1939 定义。
- 用于支持使用客户端远程管理在服务器上的电子邮件。提供了 SSL 加密的 POP3 协议被称为 POP3S。
- 支持“离线”邮件处理。其具体过程是:邮件发送到服务器上,电子邮件客户端调用邮件客户机程序以连接服务器,并下载所有未阅读的电子邮件。这种离线访问模式是一种存储转发服务,将邮件从邮件服务器端送到个人终端机器上,一般是 PC 机或 MAC。一旦邮件发送到 PC 机或 MAC上,邮件服务器上的邮件将会被删除。但 POP3 邮件服务器大都可以“只下载邮件,服务器端并不删除”,也就是改进的POP3协议。
🥥 端口
- 110tcp,995tcp(SSL加密)
IMAP4 (因特网信息存取协议4:(Internet Message Access Protocol 4)
//1.IMAP4简介
📖 简介
- 即,交互式数据消息访问协议第四个版本。用于客户机远程访问服务器上电子邮件,它是邮件传输协议新的标准。
- 与 POP3 协议一样,也是规定个人计算机如何访问网上的邮件的服务器进行收发邮件的协议,但与之相比更高级。
- 支持客户机在线或者离开访问并阅读服务器上的邮件,还能交互式的操作服务器上的邮件。
- 更人性化的地方是不需要像 POP3 协议那样把邮件下载到本地,用户可以通过客户端直接对服务器上的邮件进行操作(指:在线阅读邮件 在线查看邮件主题 大小 发件地址等信息)。
- 用户还可以在服务器上维护自己邮件目录(指:移动 新建 删除 重命名 共享 抓取文本 等操作)。
- 弥补了 POP3 协议的很多缺陷,由RFC3501定义。
🥥 端口
- 143tcp/udp,220tcp/udp(第3版),993tcp(SSL加密)
RDP (远程桌面协议:Remote Desktop Protocol)
//1.RDP简介
📖 简介
- 是一个多通道协议,让本地计算机连上提供微软终端机服务的计算机(称为服务端或远程计算机)。
🥥 端口
- 3389tcp
SIP (会话初始协议:Session initialization Protocol)
//1.SIP简介
📖 简介
- 是由 IETF 制定的多媒体通信协议,包含了第五到第七层(回话层,表示层,应用层)的内容。
- 它是一个基于文本的应用层控制协议,用于创建、修改和释放一个或多个参与者的会话。
- 源于互联网的 IP 语音会话控制协议,具有灵活、易于实现、便于扩展等特点。
🥥 端口
- 5060tcp/udp,5061tcp(TLS加密)
SNMP (简单网络管理协议:Simple network management protocol)
//1.SNMP简介
📖 简介
- 专门设计用于在 IP 网络管理网络节点(服务器、工作站、路由器、交换机及 HUBS 等)的一种标准协议,它是一种应用层协议。
🥥 端口
- 161udp(SNMP get),162udp(SNMP trap)
SSH (安全外壳协议:Secure Shell)
//1.SSH简介
📖 简介
- 是较可靠,用于计算机之间的加密登录的网络协议。
- 可以有效防止远程管理过程中的信息泄露问题。
🥥 端口
- 22tcp/udp
Telnet (TCP/IP终端仿真协议)
//1.Telnet简介
📖 简介
- 是TCP/IP协议族中的一员,是 Internet 远程登录服务的标准协议和主要方式。
- 用户使用 telnet 连接到远程运行 telnet 服务的设备,进行远程管理。
🥥 端口
- 23tcp/udp
🌒表示层协议(第六层)
NFS (网络文件系统:Network File System)
//1.NFS简介
📖 简介
- 由 SUN 公司研制的 UNIX 表示层协议(presentation layer protocol),能使使用者访问网络上别处的文件就像在使用自己的计算机一样。
🥥 端口
- 2049udp
🌓会话层协议(第五层)
NetBIOS (网上基本输入输出系统:Network Basic Input/Output System)
//1.NetBIOS简介
📖 简介
- 提供了 OSI 模型中的会话层服务,让在不同计算机上运行的不同程序,可以在局域网中,互相连线,以及分享数据。
- 严格来说,NetBIOS 不是一种网上协议,而是应用程序接口(API)。
- 较古老的操作系统,使用 IEEE 802.2 与 IPX/SPX 协议,可以使用 NetBIOS Frames 协议或 NetBIOS over IPX/SPX 协议来运作。
- 现代操作系统,多数都使用 TCP/IP 协议,则可透过 NetBIOS over TCP/IP 协议来相互通信。
TLS (安全传输层协议:Transport Layer Security)
//1.TLS简介
📖 简介
- 用于在两个通信应用程序之间提供保密性和数据完整性。
- 该协议由 TLS 记录协议(TLS Record) 和 TLS 握手协议(TLS Handshake) 组成。
🥥 端口
- 443tcp(HTTP、HTTPS加密),563tcp/udp(NNTP加密),989tcp/udp(FTP数据),990tcp/udp(FTP控制),992tcp/udp(Telnet加密),5061tcp(SIP加密),6619tcp/udp(ODETTE-FTP加密)
ALPN (应用层协议协商:Application Layer Protocol Negotiation)
//1.ALPN简介
📖 简介
- 是 TLS 协议的扩展,允许应用层协商在安全连接上使用哪个协议。
- 在 TLS 连接中,任何协议都可以通过 ALPN 协商。最常协商的协议是 HTTP/2(对于支持它的浏览器) 和历史上的 SPDY。
SSL (安全套接字协议:Secure Sockets Layer)
//1.SSL简介
📖 简介
- 用以保障在 Internet 上数据传输的安全,利用数据加密(Encryption)技术,可确保数据在网络上的传输过程中不会被截取及窃听。
- 一般通用的规格为40 bit的安全标准,美国则已推出128 bit的更高安全标准。只要3.0版本以上的 I.E. 或 Netscape 浏览器即可支持SSL。
🥥 端口
- 443tcp(HTTP、HTTPS加密),465tcp(SMTP加密),563tcp/udp(NNTP加密),636tcp/udp(LDAP加密),989tcp/udp(FTP数据),990tcp/udp(FTP控制),992tcp/udp(Telnet加密),993tcp(IMAP4加密),995tcp(POP3加密),3269tcp(msft-gc-ssl加密),6619tcp/udp(ODETTE-FTP加密)
🌔传输层通信协议(第四层)
TCP (传输控制协议:Transmission Control Protocol)
//1.TCP简介
📖 简介
- 是一种面向连接(通过三次握手)的、可靠的、基于字节流的传输层通信协议。
- 连接到不同但互连的计算机通信网络的主计算机中的成对进程之间依靠 TCP 提供可靠的通信服务。
📌 确认已建立的通道
- 基础连接确认:源 IP、源 TCP 端口、目标 IP、目标 TCP 端口。
- 序号标识(Sequencenumbers):成对出现,分为序号字段(SEQ)和确认序号字段(ACKSEQ)。
- 每次连接时,向双方指定规则:序号字段指出本报文中传送的数据在发送主机的整个数据流中的顺序号,确认序号字段指出发送本报文的主机希望接收主机发送的下一个报文的顺序号,当发送的顺序号出错,则说明前一个顺序号出错,TCP 会重新发送。
- 可预测,即发送的 SEQ 为收到的 ACKSEQ。发送的 ACKSEQ 为收到的 SEQ 与收到的报文的 TCP 数据长度。
📥 三次握手(连接)
- 第一次:建立连接时,客户端发送 SYN(同步序列编号:Synchronize Sequence Numbers) 包(seq=j) 到服务器,并进入 SYN_SENT 状态,等待服务器确认。
- 第二次:服务器收到 SYN 包,并确认(ack=j+1),同时自己也发送一个 SYN 包(seq=k),即 SYN+ACK 包,并进入 SYN_RECV 状态。
- 第三次:客户端收到服务器的 SYN+ACK 包,向服务器发送确认包 ACK(ack=k+1),此包发送完毕,客户端和服务器进入 ESTABLISHED(TCP连接成功) 状态,完成三次握手。
📤 四次握手(断开连接)
- 第一次:客户端向服务器发送 FIN(连接释放请求)。
- 第二次:服务器收到 FIN 包,会告诉应用层要释放 TCP 连接。然后发送 ACK 包,并进入 CLOSE_WAIT 状态,此时不再接收客户端数据,但仍然可以发送数据给客户端。
- 第三次:服务器发完数据后,会向客户端发送 FIN 包,并进入 LAST_ACK 状态。
- 第四次:客户端收到服务器的 FIN 包,向服务器发送 ACK,此时客户端进入 TIME-WAIT 状态,并持续 2MSL(2 倍的报文最大生存时间) 时间。该时间段服务器没有重发请求的话,客户端进入 CLOSED 状态。服务器收到 ACK 后,也进入 CLOSED 状态。
UDP (用户数据报协议:User Datagram Protocol)
//1.UDP简介
📖 简介
- 是一种面向消息(无连接)的传输层通信协议,提供一种无需建立连接就可以发送封装的 IP 数据包的方法。
- 在 Internet 的传输层中,与 TCP 互为补充。
- 支持单播,多播,广播功能。
- 想发就发(发送端时,只标识数据为 UDP),且只搬运数据报文(接收端时,只去除 IP 报文头就传给应用层)。
- 收到什么数据就传递什么,不会关心对方是否接收。没有拥塞控制,一直以恒定速度发送数据(可能丢包)。
SCTP (流控制传输协议:Stream Control Transmission Protocol)
//1.SCTP简介
📖 简介
- 是后来引入的一种新的面向消息的传输层通信协议。
- 提供的服务与 UDP 和 TCP 类似,它提供了和 TCP 一样的可靠、有序的数据传输功能,同时却能和 UDP 一样面对消息的方式来进行操作,保护消息边界。
🌕网络层协议(第三层)
IP (互联网协议:Internet Protocol)
//1.IP简介
📖 简介
- 是 TCP/IP 体系中的网络层协议。
- 只为主机提供一种无连接、不可靠的、尽力而为的数据包传输服务。
🧦 版本
- IPv4:采用32位地址长度(4段),每一段最大不超过255。在2019年分配完毕。
- IPv6:采用128位地址长度,几乎可以不受限制地提供地址。是下一版本的互联网协议。
//1.IPv4 地址 (Internet Protocol Address 4)
📨 作用
- 是 IP 提供的一种统一的地址格式。
- 它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。
- 使用32位的二进制数(分割为4个8位二进制数)。
📃 写法
- 单个:192.168.0.0
- 范围:192.168.1.3-192.168.1.27
- 范围,指定每段:a-b.c-d.x-y.m-n
- 范围,固定前 n 位二进制:192.168.0.0/n(如 24,则固定前24位(即 a、b、c 段),d 段从 00000001 ~ 11111110)
🎨 类别
- 公有地址:真实地址,由 Inter NIC (因特网信息中心:Internet Network Information Center) 负责。这些IP地址分配给注册并向 Inter NIC 提出申请的组织机构。通过它直接访问因特网。
- 私有地址:外号地址,属于非注册地址,专门为内部使用。
📐 格式
-
用"点分十进制"表示成 a.b.c.d(每一个都是 0~255 整数) 的形式。
-
如 100.4.5.6 是 01100100.00000100.00000101.00000110。
-
每个IP地址包括两个标识码(ID),即网络 ID 和主机 ID。
-
同一个物理网络的主机使用同一个网络 ID,每个主机(包括网络上工作站,服务器等)对应一个主机 ID。
-
有5种 IP 地址类型以适合不同容量的网络,即A类~E类。
🚎 A类
- 一段网络地址,三段主机地址,最高位必须是 0。
- 有126个网络(2^7-2),每个网络最大主机数 16777214 台。
- 范围:1.0.0.1 ~ 127.255.255.254
- 私有范围:10.0.0.0 ~ 10.255.255.255
🚐 B类
- 两段网络地址,两段主机地址,最高位必须是 10。
- 有16384个网络(2^14),每个网络最大主机数 65534 台,适用于中等规模的网络。
- 范围:128.0.0.1 ~ 191.255.255.254
- 私有范围:172.16.0.0 ~ 172.31.255.255
- 本地链接,找不到 DHCP 服务器时(网线问题,DHCP 服务器问题)分配:169.254.0.0 ~ 169.254.255.255
🚗 C类
- 三段网络地址,一段主机地址,最高位必须是 110。
- 有2097152个网络(2^21),每个网络最大主机数 254 台,适用于小规模的网络。
- 范围:192.0.0.1 ~ 223.255.255.254
- 私有范围:192.168.0.0 ~ 192.168.255.255
🛫 D类
- 叫做多播地址,它命名了一组应该在这个网络中应用接收到一个分组的站点,最高位必须是 1110。
- 范围:224.0.0.0 ~ 239.255.255.255
🛸 特殊
- 0.0.0.0 对应当前主机。
- 255.255.255.255 是当前子网的广播地址。
- E类用于将来和实验使用。
- 127.0.0.1 ~ 127.255.255.255 用于回路测试(如配置的 web 服务器)。
//2.子网掩码
📨 作用
- 从逻辑上把一个大网络划分成一些小网络。
- A类:255.0.0.0。
- B类:255.255.0.0。
- C类:255.255.255.0。
- 如果要将一个B类网络 166.111.0.0 划分为多个C类子网来用,只要将其子网掩码设置为 255.255.255.0 即可,这样 166.111.1.1 和 166.111.2.1 就分属于不同的网络了。
//3.超网
📨 作用
- 同子网类似的概念,它通过较短的子网掩码将多个小网络合成一个大网络。
- 例如,一个单位分到了8个C类地址:202.120.224.0 ~ 202.120.231.0(11100000 ~ 11100111),只要将其子网掩码设置为255.255.248.0(11111000),就能使这些 C 类网络相通。
//4.CIDR(无类别域间路由选择:Classless InterDomain Routing)
📨 作用
- 与子网掩码类似,都是用于划分 IP 地址为多个子网,区别在于表示方式,和粒度(更灵活)。
- 如 192.168.1.0/24 表示网络前缀为24位(前24位为网络号),后8位为主机号。
- 可支持任意长度的网络前缀。
📃 网络号和广播地址
- 简介:在 CIDR 中由网络前缀决定,都不可分配给主机。
- 网络号:是划分后,每个子网的第一位。用于标识子网的范围,
- 广播地址:是划分后,每个子网的最后一位全为 1 的地址。用于向同一子网的所有主机发送广播消息。
//1.IPv6 地址 (Internet Protocol Address 6)
📨 作用
- 是 IPv4 的后继版本,优势就在于它大大地扩展了地址的可用空间。
- 使用128位的二进制数(分割为8个4位十六进制数)。
📃 表示法
- 冒分十六进制,每个 X 表示4位十六进制数:X:X:X:X:X:X:X:X
- 0位压缩,可以把连续的一段0压缩为"::"(只能出现一次):FF01:0:0:0:0:0:0:1101 -> FF01::1101
- 内嵌 IPv4 地址,前96b采用冒分十六进制,后32b使用 IPv4 的点分十进制:X:X:X:X:X:X:d.d.d.d
//2.组播地址
📨 作用
- 使用 D 类 IP 地址, D 类地址不能出现在 IP 报文的源 IP 地址字段。
- 单播数据传输过程中,一个数据包传输的路径是从源地址路由到目的地址,利用“逐跳”的原理在IP网络中传输。然而在 IP 组播环中,数据包的目的地址不是一个,而是一组,形成组地址。
- 所有的信息接收者都加入到一个组内,并且一旦加入之后,流向组地址的数据立即开始向接收者传输,组中的所有成员都能接收到数据包。组播组中的成员是动态的,主机可以在任何时刻加入和离开组播组。
📜 格式
- 固定值 标志位 范围
🔍 标志位
- 0000:永久使用的组播地址,分配给各种技术使用。
- 0001:用户可使用的临时组播地址。
🍑 范围
- 0001(0x1):本地接口范围。
- 0010(0x2):本地链路范围。
- 0011(0x3):本地子网范围。
- 0100(0x4):本地管理范围。
- 0101(0x5):本地站点范围,类似组播的私网地址。
- 1000(0x8):组织机构范围。
- 1110(0xE):全球范围,类似组播的公网地址。
🍅 指定地址
- FF02::1:在本地链路范围的所有节点。
- FF02::2:在本地链路范围的所有路由器。
- FF02::5:所有运行 ospf 的路由器。
- FF02::9:所有运行 RIP 的路由器。
- FF02::A:所有运行 eigrp 的路由器。
- FF05::2:在一个站点范围内的所有路由器。
ICMP (互联网控制消息协议:Internet Control Message Protocol)
//1.ICMP简介
📖 简介
- 是 TCP / IP 协议簇的一个子协议,用于在 IP 主机、路由器之间传递控制消息(指网络通不通、主机是否可达、路由是否可用等网络本身的消息)。
- 是一个控制协议,没有端口号。
SMB (服务器信息块:Server Message Block)
//1.SMB简介
📖 简介
- 作为 Microsoft 网络的通讯协议,用于 Web 连接和客户端与服务器之间的信息沟通。
- 是在会话层和表示层以及小部分应用层的协议。
- 使用了 NetBIOS 的应用程序接口。
- 最近微软又把 SMB 改名为 CIFS,并且加入了许多新的特色。
🥥 端口
- 139tcp/udp(NetBIOS) 和 445udp(CIFS)
CIFS (通用网络文件系统:Common Internet File System)
//1.CIFS简介
📖 简介
- 是公共的或开放的 SMB 协议版本,并由 Microsoft 使用。
- 使程序可以访问远程 Internet 计算机上的文件并要求此计算机提供服务。
- 客户程序请求远在服务器上的服务器程序为它提供服务。服务器获得请求并返回响应。
🥥 端口
- 445
🌖数据链路层协议(第二层)
ARP (地址解析协议:Address Resolution Protocol)
//1.ARP简介
📖 简介
- 是将 IP 地址转为 Mac 地址的一个 TCP/IP 协议。
- 主机发送包含目标 IP 地址的 ARP 请求广播到局域网络上的所有主机,主机的 IP 地址和你发出的目标 IP 地址相同,对方就会发一个 MAC 地址给源主机。
- 收到返回消息后,将该 IP 地址和物理地址存入本机 ARP 缓存中保留一定时间,下次请求时直接查询 ARP 缓存以节约资源。
- 该协议建立在主机互相信任的基础上,主机可自主发送 ARP 应答消息,其他主机收到时不会检测就会将其记入本机 ARP 缓存,由此攻击者就可以向某一主机发送伪 ARP 应答报文(不是它的 ip,但响应它自己的 mac 地址),使其发送的信息到达错误的主机,这就构成了一个ARP欺骗。
🍀 ARP缓存
- 用来储存 IP 地址和 MAC 地址的缓冲区,本质就是 IP 地址 --> MAC 地址的对应表,表中每一条分别记录了其他主机的地址。
- 每一个以太网或令牌环网络适配器都有自己单独的表。
- ARP 被询问已知地址时,会先在 ARP 缓存中查看,若存在,就直接返回对应 MAC 地址,若不存在,才发送ARP请求向局域网查询。
🌠其他协议(如:路由器、家庭管理等)
HNAP (家庭网络管理协议:Home Network Administration Protocol)
//1.HNAP简介
📖 简介
- 是一种基于 HTTP-SOAP 实现的网络管理协议,允许远程拓扑发现,配置和管理设备(路由器,摄像机,PC,NAS等)。
🌠其他协议 - 路由器协议
MLD (多播侦听器发现:Multicast Listener Discover)
//1.MLD简介
📖 简介
- 是组播侦听发现协议。它用于 IPv6 路由器在其直连网段上发现组播侦听者。
- 路由器通过 MLD协议,可以了解自己的直连网段上是否有 IPv6 组播组的侦听者,并在数据库里做相应记录。同时,路由器还维护与这些 IPv6 组播地址相关的定时器信息。
- MLD 路由器使用 IPv6 单播链路本地地址作为源地址发送 MLD 报文。MLD使用 ICMPv6 报文类型。所有的 MLD 报文被限制在本地链路上,跳数为1。
- 有版本 MLDv1 和 MLDv2。
NAT (网络地址转换:Network Address Translation)
//1.NAT简介
📖 简介
- 将私有(保留)地址转化为合法 IP 地址的协议。
- 装有 NAT 的路由器(NAT 路由器),它至少有一个有效的公网 IP 地址。这样,所有使用本地地址(私网 IP 地址)的主机在和外界通信时,都要在 NAT 路由器上将其转为公网 IP 地址,才能和因特网连接。
NAT-PMP (NAT 端口映射协议:NAT Port Mapping Protocol)
//1.NAT-PMP简介
📖 简介
- 是一个能自动创建网络地址转换(NAT)设置和端口映射配置而无需用户介入的网络协议。
👓 支持的路由器
- Apple AirPort Express
- Apple AirPort Extreme
- Apple Time Capsule
- DD-WRT
- OpenWrt v8.09 or higher, with MiniUPnP daemon
- pfSense v2.0
- Tarifa (firmware) (Linksys WRT54G/GL/GS)
- Tomato Firmware v1.24 or higher. (Linksys WRT54G/GL/GS and many more)
- Peplink Balance
OSRF (开放最短路径优先:Open Shortest Path First)
//1.OSRF简介
📖 简介
- 是用于 IP 网络的链路状态路由协议。
- 使用链路状态路由算法的内部网关协议(IGP),在单一自治系统(AS)内部工作。
- 适用于 IPv4 的 OSPFv2 协议定义于 RFC 2328。
- 适用于 IPv6 的 OSPFv3 协议定义于 RFC 5340。
EIGRP (增强内部网关路由线路协议:Enhanced Interior Gateway Routing Protocol)
//1.EIGRP简介
📖 简介
- 是 Cisco 公司的私有协议(2013年已经公有化)。
- 结合了链路状态和距离矢量型路由选择协议的 Cisco 专用协议,采用弥散修正算法(DUAL)来实现快速收敛,可以不发送定期的路由更新信息以减少带宽的占用,支持 Appletalk、IP、Novell 和 NetWare 等多种网络层协议。
.
本文参考的所有资料
百度百科:https://baike.baidu.com/
CSDN各个博主的分享:https://www.csdn.net/
加上自己的理解 w(゚Д゚)w !