计算机网络-网络协议

文章目录

目录

文章目录

前言

一、五层

二、上网步骤

三、传输层协议

四、数据链路层

五、ICMP

总结


前言

主要介绍了计算机网络协议。


一、五层

  • 实体层
    • 如何连接电脑、和如何传输0/1信号、网络的电器特性
  • 链接层
    子网内数据传输(广播MAC),子网中主机的选择
    • 以太网协议
      • 规定解读0/1信号的方式,一组电信号构成一个叫做帧(标头18B+数据46~1500B)的以太网数据包
    • MAC地址
      • 数据包从一块网卡发送给另一块网卡,用硬件MAC地址(不可变,出厂时确认,独一无二)标识出网卡
    • 广播
      • 把数据包广播(目的MAC地址是FF:FF:FF:FF:FF:FF)发送给子网内所有的主机,收到的主机自行将本身MAC地址与数据包帧中的标头信息中的接受方MAC地址作比较,相同则接收,不同则抛弃
  • 网络层
    不同子网数据传输(路由IP)、子网的选择,主机到主机(IP到子网+MAC到主机)
    • 子网内主机间传输数据使用广播MAC地址匹配(网卡厂商定义,无法改变)方式,不同子网内主机传输数据需要路由选择,网络层定义网络地址(管理员分配,可以改变)以实现不同子网内主机的数据传输,先通过网络地址一对一路由转发,传输到接收方主机所处的子网中,再进行广播
    • IP地址
      • x.x.x.x(子网掩码F.F.F.X),子网掩码对应的1是网络号,0是主机号,IP地址与子网掩码AND后可以确定两个主机是否处于同一个子网
    • IP数据包
      • 标头(20~60B)+数据(~65515B),在链路层传输IP数据包时,将IP数据包当做以太网数据包的数据(46~1500B)部分,若IP数据包大于1500B,需要将其分段发送
    • ARP地址解析协议
      • 相同子网内:在子网发送一个以太网数据包广播,收到的主机将自己的IP地址与数据包中待查询的IP地址对比,相同则返回自己的MAC地址,不同则舍弃;不同子网:将该查询数据包发送给两个子网之间的网关处理
  • 传输层
    TCP/UDP实现进程之间通信,端口到端口(使用网卡的应用程序的编号)
    • UDP协议
      • 不可靠(无确认机制保证对方收到数据)的一种面向报文段协议,标头(8B)+数据(总长不超过65535B),作为IP数据包的数据部分,可能导致IP在数据链路层分片,通过ICMP差错报文告知主机报文的丢失
    • TCP协议
      • 有确认机制的面向字节流协议的实现,接收方对每个TCP报文都确认,外加超时重传机制保障每个数据包都成功发送给接收方,TCP报文数据大小有MSS控制,作为IP数据包的数据部分,一般不会导致IP在数据链路层分片
  • 应用层
    规定应用程序的数据格式
    • 不同协议规范不同应用程序,如DNS根据域名求解IP地址,HTTP实现网页请求,DHCP动态配置IP地址、WWW、FTP、Email、、、

二、上网步骤

  • 获取四个参数
    • 本机IP地址
      • 静态IP
        • 主机IP地址确定不变
      • 动态IP
        • 主机IP地址动态分配,不确定可变
        • DHCP(动态主机配置协议),实现动态IP地址配置
          应用层协议
          • 包装在UDP数据包的数据内,发送DHCP报文时主机还未配置IP地址,其以太网标头部分发送方本机MAC地址+接收方FF:FF:FF:FF:FF:FF广播MAC地址,IP标头发送方0.0.0.0+接收方255.255.255.255,UDP标头发送方端口68+接收方端口67
          • DHCP服务器收到广播发来的DHCP报文接受,并在响应中给请求端分配IP和各种网络参数,其他主机丢弃
    • 子网掩码
      协助确认两个主机是否属于同一子网
    • 网关的IP地址
      不同子网主机通信必须经过网关
    • DNS的IP地址
      通过域名解析出资源所处主机的IP地址
  • 一次HTTP上网的流程
    • 设置好自己的网络参数(本地IP 子网掩码 网关IP DNS的IP)
    • DNS解析出域名的IP地址
    • 子网掩码确定发送方和接收方的是否处于一个子网,以确定接收方是选择网关MAC地址(ARP根据IP解析出)还是子网内广播
    • 应用层创建应用程序请求,如HTTP请求
    • TCP协议,设置端口,HTTP是80
    • IP协议记录发送双方的IP地址
    • 以太网协议写入双方MAC地址,其数据部分最多存1500B的IP数据包,可能需要将IP数据包分割
    • 服务器端收到多个以太网数据包后,根据IP标号将其还原拿出完整TCP报文,并读里面的HTTP请求并响应,客户端收到响应后显示响应中的网页资源

三、传输层协议

  • TCP
    面向字节流协议,应用程序产生的全体数据在传输层TCP分段,IP层不再分片,与真正发送的单个IP数据报没什么联系
    • TCP连接
      • TCP报文格式
      • 建立
        三次握手,客户端主动发送SYN标记为1的TCP连接请求,服务器收到后以SYN标记为1且ACK为1的确认,这两个握手不能传输数据,客户端收到确认后,再次发送ACK标记为1的一次确认,这个确认可以防止超时失效的TCP连接请求导致服务器空等的问题,同时可以在这个确认响应中传输数据(万维网就将HTTP请求就作为该握手确认的数据部分)
      • 释放
        四次挥手,客户端没有数据要发送后,主动向服务器发送FIN标志为1的TCP连接释放请求,服务器收到后响应FIN标志为1,ACK标志为1的确认响应,客户端此时停止传递数据;服务端发送完剩余数据后,发出FIN标记为1,ACK标记为1的连接释放确认报文(还是对客户端之前的释放请求序列号的确认),这三个报文不能传递数据,客户端收到后响应一个ACK标记为1的确认报文,最后经过2MSL后,连接彻底释放,该2MSL可以确保对第三次挥手报文的确认报文(即第四次挥手报文)没有顺利到达客户端时,服务器重传的第三次挥手报文可以被客户端重新接受并发回确认,且该时间段内会丢弃所有迟到的报文以保障新连接不被旧数据影响,在该时间段内客户端可以随意重启,但服务器重启必须等待2MSL的平静时间后才能进行下一次连接防止出错
    • TCP分段与IP分片
      • TCP分段
        在运输层完成分段与重组
        • MSS最大分段大小,指TCP数据包能够传输的最大数据分段,连接双方在三次握手报文中前两次SYN标志为1的报文段中商议,MSS一般等于MYU减IP首部和TCP首部(536B 最好取512B倍速)
        • TCP分段后MSS<MYU,IP层不会再分片,TCP分段后每个分段中都有TCP首部,在传输层就能重组
        • UDP和ICMP不会分段,UDP或ICMP报文段超过MTU时,IP会分片
      • IP分片
        在网络层完成分片与重组
        • MYU(路径中最小MTU(1500B))(576B),规定链路中数据报可以存下的最大IP数据分片
        • UDP或ICMP报文段超过MTU时,IP会分片,IP分片只有一篇带有UDP或ICMP首部,其余分片只有IP头部,只有到网络层才能重组
        • IP分片数据报丢失一片数据需要重传整个数据报(网络层本身不提供超时重传功能,由运输层TCP实现),但是TCP分段后IP基本不再分片,丢失也是丢失一整个IP数据报,只需要重传丢失的整个TCP报文段即可
          意思应该就是如果TCP分段后IP还分片了,不能只重传丢失的这一个IP分片,必须重传所有的TCP报文段
    • TCP流量控制机制
      • 交互数据流
        多次小流量的数据交换
        • 捎带ACK
          • 先不主动发送ACK,等一段时间,在这段时间内有数据要发送时才在数据中捎带发送ACK(超过这段时间直接发送ACK),减少传输中ACK报文的发送频率
        • Nagle算法
          • 保证TCP连接上只有一个未被确认的数据报在发送,将待发送的数据存在发送缓存中,待上一次发送的字节得到确认后,再把缓冲中的数据作为一个报文段发送,同时继续在缓存中存放待发送的字节数据
      • 成块数据流
        每次发送尽可能多的数据
        • 滑动窗口
          • 在三次握手报文中双方约定发送窗口与接收窗口的大小,发送方任意发送几个(必须小于接受窗口数)数据等待接收方确认ACK(累计确认ACK,发送1、2、3,只对3确认,表示1、2、3都正确收到了),确认后窗口左边沿右移到确认号处
          • ACK报文中也会告知发送方此刻自己的接收窗口大小(实现实时流量控制),为0则结束发送,直到ACK报文中接收窗口大小不为0
          • 持续(坚持)计时器,收到0窗口报文时,开启持续计时器,若超时还未收到非0窗口报文,则发送一个0窗口探测报文,接收方收到后响应自己现在的窗口值
          • 糊涂窗口综合征,接受方每次只从接受缓存处读取1字节就发送确认,并将窗口设置为1字节,使得网络效率变低,通过使接收方等待一段时间或缓存空间过半才发回确认报文,发送方也等发送缓存中数据存的足够大再一起发送解决
        • 缓冲区
          • 发送缓冲区
            • 存放已经发送但是还未收到确认报文的数据报(收到确认报文则直接丢弃)
          • 接收缓冲区
            • 存放按序到达但还未被应用程序读取、或未按序到达的数据
    • TCP四大定时器
      • 重传定时器
        • 每次发送报文后开启重传计时器,若超过计时器时间还未收到ACK,则超时重传数据
      • 坚持定时器
        • 解决0窗口大小的死锁问题(接受方发送的非0窗口报文丢失,导致发送方一直等待不发送,接收方一直等待发送方发送),收到0窗口报文后开启坚持计时器,超时发送0窗口侦测报文,该报文会维护重传定时器,超时会重传,接收方接收后告诉发送方现在的发送窗口大小,不为0则可发送数据,为0重新计时
      • 保活定时器
        • 服务端每收到一个客户端数据,开启一次保活计时器,在保活计时器时间内没有收到客户端数据时,发送一个探测报文,连续十次探测报文客户端没有回应,会断开服务器与客户端的连接
      • 2MSL定时器
        • 收到第三次挥手报文,发送对第三次挥手报文的确认(即第四次挥手报文)断开连接时,开启2MSL计时器,确保第四次挥手确认报文未被正确收到时可以接受第三次挥手报文的重传并且重新发送第四次挥手确认报文,且这段时间内会丢失延迟的失效报文
    • TCP拥塞控制机制
      全局控制所有的主机、路由器防止过多数据注入到网络中
      • 拥塞窗口
        • 拥塞窗口根据网络实时情况动态变化调整,发送方从拥塞窗口和接受窗口中选取较小的一方作为发送窗口的标准,下面讨论将接受窗口视作无限大,发送窗口等于拥塞窗口
      • 慢开始和拥塞避免
        • 慢开始
          • 拥塞窗口(即发送窗口)开始设置为1个MSS,每次收到上次发送的报文段确认时,拥塞(发送)窗口成倍增加,发送上一次报文段数量的两倍的报文段
        • 拥塞避免
          • 当拥塞窗口达到慢开始门限值时,执行拥塞避免算法,每一次收到报文段确认后,拥塞窗口值加1个MSS,缓慢增长
        • 在慢开始或拥塞避免阶段,发送方没有按时收到确认会判断网络出现拥塞,将慢开始门限值设置为出现拥塞时发送窗口值的一半(但不能小于2个MSS),然后重置拥塞窗口大小为1个MSS,执行慢开始和拥塞避免
      • 快重传和快恢复
        • 快重传
          • 执行重复确认(收到失序报文段时重复确认),不是捎带确认(交互数据流自己发数据时捎带ACK),也不是累计确认(流量控制机制中对最后一个报文段确认代表前面报文段都成功接收到了),收到三个重复确认代表后面报文段已经顺利送达,只有中间缺失的报文段没送达,需要立即重传未收到的报文段
        • 快恢复
          • 收到重复确认,判断网络可能发生拥塞,但不严重,将慢开始门限值减半,不将拥塞窗口置为1个MSS从头开始执行慢开始,而是直接置减半后的慢开始门限值,开始执行拥塞避免算法,实现快速恢复
  • UDP
    面向数据报的不可靠运输层协议,进程(应用程序)每个操作产生一个UDP数据报,包装成IP数据报,若该IP数据报>MTU,会导致IP分片
    • 不可靠,没有超时重传功能,丢失一个包装着UDP数据报的IP数据报时,会发送ICMP差错报文给源主机(若UDP未开校验和导致校验值出错,会丢失这个报文且不发送ICMP差错)
    • 不可靠,超过UDP最大数据报限制(应用程序接口限制、TCP/IP内核)后会发生数据报截断,导致丢失数据且不会通知(TCP超过MSS时会分段而不是数据截断丢弃)
  • 校验
    • TCP必选,首部和数据都校验
    • UDP可选,首部和数据都校验
    • IP,仅对首部校验

四、数据链路层

  • 目的
    • IP模块发送和接受IP数据包
      • TCP/IP协议网络传输选择big endian,称作网络字节序,little endian格式存储的数据必须转换成网络字节序
      • IP数据包理论最大65535B,超过数据链路层的MTU(最小的MTU为576B减IP和TCP头部20B*2后为536B)时需要分片,考虑到网络的传输效率(避免产生分片),一般要求其数据大小不超过512B
      • 路由选择
        • 先匹配主机,再匹配同子网(子网掩码协助)路由器,再匹配同网号路由器,再搜索默认路由,都失败则丢掉
    • ARP模块解析IP地址得出MAC地址
      • 只在局域网中使用,主机维护ARP缓存,对于发来的请求ARP解析的IP地址,先在缓存中找有没有对应MAC地址,没有再发一个广播,收到的主机用自己的IP地址与请求中的IP地址比较,相同则返回自己的MAC地址,请求主机收到后在自己的缓存中加上该映射,缓存有超时值限制
      • 不同网络间,通过连接子网的路由器回答ARP请求的行为叫做ARP代理
    • RARP模块解析MAC地址得出IP地址
      • 与ARP协议相反,一般在DHCP中集成使用
  • 协议
    • 以太网、令牌环网等、、
  • 最大传输单元MTU
    • 以太网MTU=1500B,IP数据报作为以太网数据包的数据部分,若超过以太网MTU则需要分片传输
  • 最大路径传输单元MYU
    • 不同网络中主机通信需要在多个网络间传输时,所有传输线路的MTU中最小的MTU,为路径的最大传输单元MYU
    • 用Tracetoute程序实现,设置IP不可分片,设置发送的分组大小=MTU,收到ICMP不可分片差错报文时就减小分组长度,直到发送成功,就找到了可实现顺利传输的路径中最大的MTU

五、ICMP

网际控制报文协议ICMP是网络层协议,在IP数据包内传输

  • 分类
    • 差错报文
      • IP数据报错误时,ICMP发送ICMP差错报文给源主机,以便其作出相应处理(网络不可达、主机不可达、端口不可达、源站抑制(主机处理速度赶不上接受数据速度))
      • 不会发送差错报文的情况
        • ICMP差错报文、非IP分片的第一片、多个源地址、目的IP地址是广播类型、数据链路层广播(防止广播风暴产生)
    • 查询报文
      • 子网掩码查询
      • 时间戳查询
      • ping查询
        • 只利用ICMP回显请求和回显应答,不经过传输层,测试服务器连通性
  • 应用
    • Traceroute程序
      • 侦测源主机到目的主机之间路由状况,利用了IP首部的TTL(Time To Life)字段和端口不可达ICMP差错报文

总结

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值