资讯动态

计算机网络协议介绍

发布时间:2026/8/24 20:31:01 来源:尧图企业网站定制
/* MD / 富文本中的 .toc含博客园搬家等嵌套结构.toc-box 在侧栏不受影响 */ #content_views .toc, /* 编辑器常在目录前后插入空 p:empty 仍占 20px一并去掉避免顶空隙 */ #content_views.markdown_views p:empty:has( .toc), #content_views.markdown_views .toc p:empty, /* 富文本旧版目录标记 */ #content_views.htmledit_views #main-toc, #content_views.htmledit_views #hr-toc, #content_views.htmledit_views p[id*“-toc”] { display: none !important; } /* 目录去掉后紧跟的首个标题不再多出一块上边距 */ #content_views.markdown_views .toc h1, #content_views.markdown_views .toc h2, #content_views.markdown_views .toc h3, #content_views.markdown_views .toc h4, #content_views.markdown_views .toc p:empty h1, #content_views.markdown_views .toc p:empty h2, #content_views.markdown_views .toc p:empty h3, #content_views.markdown_views .toc p:empty h4 { margin-top: 0 !important; }计算机网络协议介绍一、从一个请求来看网络分层原理1.1 复杂的网络以下为一次请求过程中可能遇到的问题预示着网络的复杂性。1.2 如何简化复杂度为了简化网络的复杂度网络通信的不同方面被分解为多层次结构每一层只与紧挨着的上层或者下层进行交互将网络分层这样就可以修改甚至替换某一层的软件只要层与层之间的接口保持不变就不会影响到其他层。1.2.1 OSI (Open System Interconnection Reference Model): 开放系统互联参考模型1.2.2 TCP/IP 协议族1.2.3 两种协议的对应关系应用层应用程序负责的部分传输层TCP、UDP、SCTP 等网络层IPv4、IPv6 等数据链路层以太网、无限 LAN (WIFI)物理层光纤、双绞线电缆、无线设备1.3 一个请求的分层解析流程请求各层之间都是调用对应层的接口 (这个接口可以类比 java 中的接口它可以有各种实现方式)。\1. 在请求过程中域名是无法直接被计算机识别的必须先转换成 ip此时先检测本地是否配置了 host如果没有配置的话会发起一个 dns 请求。\2. DNS 使用 UDP 作为传输层DNS 服务器 IP 配置在你的操作系统中可以直接获取。\3. 数据链路层在接收到网络层调用后会通过 IP 使用 ARP 协议获取当前 IP 对应的 MAC 地址。\4. 最终通过物理层将数据传入路由器路由器进行逆向解析 (MAC 地址 -IP)如果路由器判断此信息不是给自己的会将信息继续传给下游电信运营商。\5. 运营商判断是 DNS 请求还是 HTTP 请求如果是 DNS 请求会调用 DNS 服务器换取 IP 并返回。\6. 获取 IP 后 DNS 请求完成此时再次发送一次 HTTP 请求HTTP 在传输层使用的是 TCP 协议其他层同理。\7. 运营商判断如果非 DNS 请求那么电信会通过运营商直接的协议进行消息的发送最终找到 ip 对应的服务器。\8. 接收端服务器的物理层接受到此次请求通过对应的协议进行数据的层层解析获取对应的信息最终将数据传给本地服务器nginx、tomcat 等服务器将响应报文通过 HTTP 方式将数据返回。一次请求的流转如下图二、HTTP 协议超文本传输协议 (HyperText Transfer ProtocolHTTP) 一种无状态的以请求 / 应答方式运行的协议它使用可扩展的语义和自描述消息格式与 基于网络的超文本信息系统灵活的互动2.1 HTTP 报文格式请求报文和响应报文的结构基本相同。起始行描述请求或响应的基本信息。头部字段集合key-value 结构报文的详细信息。消息体真实传输的内容可以是文本或二进制等。2.1.1 HTTP 请求报文一个 HTTP 请求报文由请求行request line、请求头部header、空行和请求数据 4 个部分组成下图给出了请求报文的一般格式。2.1.1.1 请求行请求行由请求方法字段、URL 字段和 HTTP 协议版本字段 3 个字段组成它们用空格分隔。例如GET /index.html HTTP/1.1。HTTP 协议的请求方法有 GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT。2.1.1.2 请求头部请求头部由关键字 / 值对组成每行一对关键字和值用英文冒号 “:” 分隔。请求头部通知服务器有关于客户端请求的信息典型的请求头有User-Agent产生请求的浏览器类型。 Accept客户端可识别的内容类型列表。 Host请求的主机名允许多个域名同处一个 IP 地址即虚拟主机。2.1.1.3 空行最后一个请求头之后是一个空行发送回车符和换行符通知服务器以下不再有请求头。2.1.1.4 请求数据请求数据不在 GET 方法中使用而是在 POST 方法中使用。POST 方法适用于需要客户填写表单的场合。与请求数据相关的最常使用的请求头是 Content-Type这个主体的对象类型和 Content-Length主体的长度。2.1.1.5 头部字段注意事项字段名不区分大小写字段名里不允许出现空格可以使用连字符 “-”但不能使用下划线 “”有的服务器不会解析带 “” 的头字段。字段名后面必须紧接着 “:”不能有空格而 “:” 后的字段值前可以有多个空格 字段的顺序是没有意义的可以任意排列不影响语义 字段原则上不能重复除非这个字段本身的语义允许例如 Set-Cookie。2.1.2 HTTP 响应报文HTTP 响应也由三个部分组成分别是状态行、消息报头、响应正文。2.1.2.1状态行格式如下HTTP-Version Status-Code Reason-Phrase CRLF其中HTTP-Version 表示服务器 HTTP 协议的版本Status-Code 表示服务器发回的响应状态代码Reason-Phrase 表示状态代码的文本描述。状态代码由三位数字组成第一个数字定义了响应的类别且有五种可能取值。• 1xx指示信息–表示请求已接收继续处理。• 2xx成功–表示请求已被成功接收、理解、接受。• 3xx重定向–要完成请求必须进行更进一步的操作。• 4xx客户端错误–请求有语法错误或请求无法实现。• 5xx服务器端错误–服务器未能实现合法的请求。常见状态代码、状态描述的说明如下• 200 OK客户端请求成功。• 400 Bad Request客户端请求有语法错误不能被服务器所理解。• 401 Unauthorized请求未经授权这个状态代码必须和 WWW-Authenticate 报头域一起使用。• 403 Forbidden服务器收到请求但是拒绝提供服务。• 404 Not Found请求资源不存在举个例子输入了错误的 URL。• 500 Internal Server Error服务器发生不可预期的错误。• 503 Server Unavailable服务器当前不能处理客户端的请求一段时间后可能恢复正常举个例子HTTP/1.1 200 OKCRLF。百度百科 状态码参考网址2.1.2.1 响应头Access-Control-Allow-Credentials:trueAccess-Control-Allow-Origin:*Access-Control-Expose-Headers:Date,X-API-Request-IdContent-Encoding:gzipContent-Type:application/json;charsetUTF-8Date:Sun, 10 Mar 2024 12:00:17 GMT2.1.2.2 响应实体内容服务器发给浏览器要让浏览器显示的内容htmljscss图片数据等信息。三、HTTP 请求完整过程3.1 请求过程描述\1. 首先浏览器先解析 URL 中的域名。\2. 通过域名获取对应的 ip 地址上边已经说过 ip 是通过 DNS 服务器获取我们可以在谷歌浏览器中查看到域名对应 ip 的解析。\3. 获取到 IP 地址后浏览器就可以发起与服务器的三次握手\4. 建立连接后就开始组装 http 请求发送请求。\5. 接收端收到请求后开始处理请求解析请求头中的数据并生成对应的响应数据给发送端返回响应数据。\6. 浏览器收到响应后会通过响应头类型解析对应的数据报文。补充上边 2 中从浏览器中获取域名的步骤。浏览器中输入chrome://net-export/打开对应文件搜索你想找的域名即可。四、TCP 协议4.1 TCP 协议描述面向连接的可靠的基于字节流的传输层通信协议4.2 TCP 协议特点• 基于连接的数据传输之前需要建立连接• 全双工的双向传输◦ 客户端和服务端可以互相双向写数据• 字节流不限制数据大小打包成报文段保证有序接收重复报文自动丢弃◦ 发送方每次传输不限制数据大小不是一次性将所有的数据都传输会将数据切分成多个片段并进行排序通过网络介质传输给接收方。◦ 接收方不同的数据包会通过网络不同的路线传入接受方因此接收方收到的数据有可能是乱序的因此需要对数据包进行重排序。• 流量缓冲解决双方处理能力的不匹配• 可靠的传输服务保证可达丢包时通过重发机制实现可靠性• 拥塞控制防止网络出现恶性拥塞◦ 当网络环境比较差的时候会控制报文大小减小传输速率。4.3 TCP 连接管理4.3.1 TCP 连接四元组四元组分别为源地址、 源端口、 目的地址、 目的端口4.3.2 TCP 头部格式序列号在建⽴连接时由计算机⽣成的随机数作为其初始值通过 SYN 包传给接收端主机每发送⼀次数据就累加⼀次该数据字节数的⼤⼩。⽤来解决⽹络包乱序问题。确认应答号指下⼀次期望收到的数据的序列号发送端收到这个确认应答以后可以认为在这个序号以前的数据都已经被正常接收。⽤来解决不丢包的问题。控制位ACK该位为 1 时确认应答的字段变为有效TCP 规定除了最初建⽴连接时的 SYN 包之外该位必须设置为 1 。RST该位为 1 时表示 TCP 连接中出现异常必须强制断开连接。SYN该位为 1 时表示希望建⽴连接并在其序列号的字段进⾏序列号初始值的设定。FIN该位为 1 时表示今后不会再有数据发送希望断开连接。当通信结束希望断开连接时通信双⽅的 主机之间就可以相互交换 FIN 位为 的 TCP 段。**URG**当 URG1 时表明紧急指针字段有效。它告诉系统此报文段中有紧急数据应该尽快传送而不按照原来的排队序列来传送。**PSH**推送PuSH当两个应用进程进行交互式的通信时有时一端的应用进程希望在键入一个命令之后就能立即收到对方的响应。在这样的情况下就可以使用推送操作此时发送方将 PSH 置为 1并创建一个报文发送出去接收端接受到该报文发现 PSH 为 1就尽快交付接受应用进程而不用等到整个缓存都满了之后再向上交付。**紧急数据指针**当发送端需要发送一些紧急数据时可以设置紧急指针来指示接收端在接收到该指针之后尽快处理这些数据。紧急指针的值是一个相对于当前序列号的偏移量用于指示紧急数据在整个数据流中的位置。窗口大小当前服务器缓存可接受的数据报文大小。4.4 TCP 三次握手说明\1. 开始时服务端和客户端的连接处于断开状态。\2. 服务端启动后会监听特定端口处于监听状态等待客户端的请求。\3. 客户端发起请求变更成发送状态此时会在请求中携带同步序列号 x。\4. 服务端接受到请求后保存客户端对应的信息并发送确认收到应答消息此消息的应答码需要在 x 的基础上加 1此时服务端处于等待客户端确认状态。\5. 客户端收到服务端确认后状态变更为已连接客户端也需要给服务端回复确认收到此时应答码为服务端确认码 y1。\6. 服务端收到客户端确认消息后状态变更为已连接。\7. 连接建立成功此为三次握手。\8. 握手过程中会消耗序号建立链接后不会消耗。以下是三次握手的示例过程4.5 TCP 四次挥手说明\1. 客户端和服务端都可以主动发起关闭连接。\2. 图中为客户端发起关闭连接首先客户端发起 FIN 关闭连接请求。\3. 服务端收到关闭请求后先回复收到关闭请求的确认消息给客户端此时客户端处于等待关闭 2 状态等待服务端完成收尾工作服务端完成收尾 (剩余未完成传输数据同步)执行关闭连接方法并给客户端发送 FIN 关闭链接请求。\4. 客户端收到关闭请求后给服务端回复确认关闭应答消息服务端关闭客户端处于等待状态此时需要等待两个最大请求时长 (防止服务端由于网络原因未收到应答消息服务端会重试发送 FIN 消息)。\5. 等待时间到期后关闭连接。4.5 TCP 可靠性传输4.5.1 停止等待协议描述没传送一个报文服务端都回复一个确认消息效率低下。4.5.1 重传机制4.5.1.1 ack 丢失描述如果出现丢包如何处理4.5.1.2 报文丢失4.5.2 滑动窗口协议与累计确认延时 ack说明\1. 约定窗口大小为 4每次发送四个报文。\2. 服务端收到后只收到124。 3 丢失此时服务端确认只确认到 2。\3. 客户端收到确认后从 3 开始在滑动下一个窗口进行数据传输。以上就是今天的分享觉得有帮助记得点赞收藏以上所说到的漏洞扫描工具都整理成压缩包了朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】同时还为准备学习网络安全黑客或者正在学习整理了一套360独家内部资料包含以下内容如有需要也可文末获取①网络安全学习路线②20份渗透测试电子书③安全攻防357页笔记④50份安全攻防面试指南⑤安全红队渗透工具包⑥网络安全必备书籍⑦100个漏洞实战案例⑧安全大厂内部视频资源⑨历年CTF夺旗赛题解析一、网络安全黑客学习路线网络安全黑客学习路线形成网络安全领域所有的知识点汇总它的用处就在于你可以按照上面的知识点去找对应的学习资源保证自己学得较为全面。二、网络安全教程视频我们在看视频学习的时候不能光动眼动脑不动手比较科学的学习方法是在理解之后运用它们这时候练手项目就很适合了。三、网络安全CTF实战案例光学理论是没用的要学会跟着一起敲要动手实操才能将自己的所学运用到实际当中去这里带来的是CTFSRC资料HW资料毕竟实战是检验真理的唯一标准嘛~四、网络安全面试题最后我们所有的作为都是为就业服务的所以关键的临门一脚就是咱们的面试题内容所以面试题板块是咱们不可或缺的部分这里我给大家准备的就是我在面试期间准备的资料。网安其实不难难的是坚持和相信自己我的经验是既然已经选定网安你就要相信它相信它能成为你日后进阶的高效渠道这样自己才会更有信念去学习才能在碰到困难的时候坚持下去。机会属于有准备的人这是一个实力的时代。人和人之间的差距不在于智商而在于如何利用业余时间只要你想学习什么时候开始都不晚不要担心这担心那你只需努力剩下的交给时间这份完整版的网络安全学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价