目录

1、常用协议原理和命令

1.1、查找协议的端口号

1.2、arp协议

1.2.1、arp协议在工作的时候有2中类型的数据包

1.2.2、arp病毒的工作原理

1.3、TCP/IP详细图

2、TCP的流程控制

2.1、滑动窗口

2.2、拥塞控制

2.2.1、拥塞控制算法⭐⭐⭐

2.3、TCP的差错控制

3、计时器

3.1、重传计时器——为了控制丢失的数据段⭐⭐⭐

3.2、坚持计时器——为了防止零窗口死锁

3.3、保活计时器——防止两个TCP之间的连接长时间的空闲

3.4、时间等待计时器——连续终止期间使用的

4、TCP的应用

5、UDP的使用

5.1、UDP的封装格式

5.2、UDP的流控和差错控制

6、TCP/IP协议栈


1、常用协议原理和命令

要记住的协议

  • http(Hyper Text Transfer Protocol):超文本传输协议 。端口号:80
  • https(Hyper Text Transfer Protocol Secure):安全超文本传输协议。端口号:443

http和https,可以理解为传输的内容是明文(http)和传输的内容是加密的(https)

  • ftp(File Transfer Protocol):文本传输协议。端口号:21
  • dns(Domain Name System):域名系统。端口号:53
  • smtp(Simple Mail Transfer Protocol):简单邮件传输协议。发邮件的。端口号:25
  • snmp(Simple Network Management Protocol):简单网络管理协议。端口号:161
  • tftp(Trivial File Transfer Protocol):普通文件传输协议,大部分用udp工作。端口号:69

1.1、查找协议的端口号

[root@fttsaxf ~]# cat /etc/services|grep snmp  # 查找端口号
snmp            161/tcp                         # Simple Net Mgmt Proto
snmp            161/udp                         # Simple Net Mgmt Proto

1.2、arp协议

arp协议(Address resolution protocol):地址解析协议;工作在网络层,端口号出现在传输层,所以arp协议没有对应的端口号。

日常中,先使用dns解析协议得到IP地址然后再用arp协议得到MAC地址。例如:www....-->ip-->mac

作用:将IP地址解析为MAC地址

图中的缓存表是arp缓存表

[root@fttsaxf ~]# arp -a  # windows和linux的命令都是这个
? (192.168.29.1) at 00:50:56:c0:00:08 [ether] on ens33
gateway (192.168.29.2) at 00:50:56:ee:e5:6d [ether] on ens33

1.2.1、arp协议在工作的时候有2中类型的数据包

  • arp request(请求包)

  • arp response (响应包)

用封装的角度去理解,从网络层和数据链路层,牵扯到的设备有交换机、pc机和路由器

1.2.2、arp病毒的工作原理

arp病毒的危害:导致整个局域网里的主机找不到正确网关,从而导致不能上网

工作原理:伪造arp广播包,IP地址还是网关的,但是mac地址不是正确的网关的,因为交换机只查看mac地址。

如何防范?

设置静态的MAC-->IP对应表,不要让主机刷新你设定好的转换表。把电脑和网关的IP地址和mac地址互相绑定。

[root@fttsaxf ~]# arp -a
? (192.168.29.1) at 00:50:56:c0:00:08 [ether] on ens33
gateway (192.168.29.2) at 00:50:56:ee:e5:6d [ether] on ens33
[root@fttsaxf ~]# ip route
default via 192.168.29.2 dev ens33
169.254.0.0/16 dev ens33 scope link metric 1002
192.168.29.0/24 dev ens33 proto kernel scope link src 192.168.29.128
# -s,static  默认情况下arp缓存表的记录时动态更新的
[root@fttsaxf ~]# arp -s 192.168.29.2 00:50:56:ee:e5:6d
[root@fttsaxf ~]# arp -a
? (192.168.29.1) at 00:50:56:c0:00:08 [ether] on ens33
gateway (192.168.29.2) at 00:50:56:ee:e5:6d [ether] PERM on ens33

arp防火墙,可以帮助我们绑定

1.3、TCP/IP详细图


2、TCP的流程控制

2.0、引入

停止等待协议(发一个报文,停止发送,等待确认收到,然后继续发送。弊端:效率极低)和连续ARQ协议(弊端:怎么能够确定中间包收到了呢?客户端连读向服务端发送了三个包(1,2,3包),若是2号包丢了,那么服务端只会确认收到了1号包,即会收到最大的连续包的序号)

连续arq协议:分为退回n帧协议和选择重传协议

2.0.1、退回n帧协议

例如,如果发送方发送了前5个分组,而中间的第3个分组丢失了。这时接收方只是对前两个分组发出确认(采用的是累计确认方式)。发送方无法知道后面三个分组的下落,而只好把后面的三个分组都再重传一次。这就叫做Go-back-N(回退N),表示需要再退回来重传已发送过的N个分组。可见当通信线路质量不好时,连续ARQ协议会带来负面的影响。这种效率很低的

2.0.2、选择重传协议(SR)

windows默认200毫秒确认一次。

[root@nginx-kafka02 ~]# cd /proc/sys/net/ipv4/
[root@nginx-kafka02 ipv4]# cat tcp_sack   # 这就表示我们内核使用的是选择重传协议
1
# tcp_ack=1,表示开启了选择重传协议:记录有哪些包到了哪些没到,不需要重传丢失包及其之后的所有包。

2.1、滑动窗口

下面通过例子说明如何利用滑动窗口机制进行流量控制

2.2、拥塞控制

不拥塞情况

拥塞情况

中间链路带宽比较窄,传输时窗口大小根据拥塞窗口(记为Cwnd)的大小变为5。这样就提醒了前边的滑动窗口只发送小于或者等于5的数量的包过来,win的值是参考Cwnd的值来定的。

发送方的窗口大小=min(拥塞窗口,接收方发过来的win值)

图片因为链路的堵塞,丢包了,只接受到了102一个确认 (即只收到了seq=101的包)

2.2.1、拥塞控制算法⭐⭐⭐

TCP进行拥塞控制的算法有四个:

  • 慢启动
  • 拥塞避免:经过一个RTT时间就增加1
  • 快重传
  • 快恢复(出现了快重传就执行快恢复 )

对于ssthresh初始值,不同的操作系统和不同的操作系统内核都是不同的。

这样就能是数据传输达到最大的效率

2.3、TCP的差错控制

TCP差错控制的3种方式

  • 校验和
  • 确认
    • 受损伤的数据段
    • 丢失的数据段
    • 重复的数据段
    • 失序的数据段
    • 确认的丢失
  • 超时

这些机制就体现了TCP的可靠性。

3、计时器

  • 重传计时器
  • 坚持计时器
  • 保活计时器
  • 时间等待计时器

3.1、重传计时器——为了控制丢失的数据段⭐⭐⭐

3.2、坚持计时器——为了防止零窗口死锁

A收到win=0的确认,等待对方发送确认来通知窗口的大小,并启动坚持计时器。若是在坚持计时器超时之前接收到通知窗口大小的ack,那么A就继续发送后续的数据段;若是在坚持计时器超时之前没有接收到通知窗口大小的ack,那么A会发送探测数据段(这个报文段只有一个字节的数据,有一个序号,但它的序号永远不需要确认;甚至在计算对其他部分的数据的确认时该序号也被忽略。探测报文段提醒对方:确认已丢失,必须重传。),提醒接收端确认已丢失,如果没有坚持计时器和探测数据段,ack丢失时(我们知道TCP对于确认包是不需要发送确认的,若是确认包丢失了,接收TCP这边会认为自己已经完成任务了,就等待发送TCP发送报文段;但是发送TCP由于没有收到确认,就等待对方发送确认来通知窗口的大小),双方会进入等待死锁的状态。

3.3、保活计时器——防止两个TCP之间的连接长时间的空闲

设想有这样的情况:客户已主动与服务器建立了TCP连接。但后来客户端的主机突然出故障。显然,服务器以后就不能再收到客户发来的数据。因此,应当有措施使服务器不要再白白等待下去。这就是使用保活计时器。服务器每收到一次客户的数据,就重新设置保活计时器,时间的设置通常是两小时。若两小时没有收到客户的数据,服务器就发送一个探测报文段, 以后则每隔75秒钟发送一一次。若一连发送10 个探测报文段后仍无客户的响应,服务器就认为客户端出了故障,接着就关闭这个连接。

3.4、时间等待计时器——连续终止期间使用的

A发送了最后一个ACK后,不立即关闭连接,等时间等待计时器超时后再关闭。时间等待计时器设置的时间是2MSL。MSL叫做最长报文段寿命,RFC793建议设为2分钟。但是对于现在的网络,MSL = 2分钟可能太长了一些。因此TCP允许不同的实现可根据具体情况使用更小的MSL值。

4、TCP的应用

443是HTTPS默认端口

可以查看/etc/services,里面包含了协议使用的默认端口

5、UDP的使用

稍微记一下

5.1、UDP的封装格式

5.2、UDP的流控和差错控制

  • UDP没有流控机制
  • UDP只有检验和来提供差错控制
    • 需要上层协议来提供差错控制,例如:TFTP协议

6、TCP/IP协议栈

[计算机网络]十、TCP的拥塞控制和4个计时器、常用协议原理和命令相关推荐

  1. 计算机网络(10)-----TCP的拥塞控制

    TCP的拥塞控制 拥塞(congestion) 在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏. 拥塞控制 拥塞控制就是防止过多的数据注入到网络中,这样可以使网 ...

  2. 【计算机网络】-TCP的拥塞控制及拥塞控制方法

    TCP的拥塞控制及拥塞控制方法 TCP的拥塞控制 TCP的拥塞判断 TCP拥塞控制的方法 基于窗口的拥塞控制 拥塞窗口 慢开始 拥塞避免 快重传 快恢复 TCP拥塞控制总体流程图 TCP拥塞控制综合例 ...

  3. 计算机网络复习总结:什么是OSI7层模型、5层模型、TCP/IP 4层模型,各层协议导航

    个人总结整理相关计算机网络知识点,出发点是各类问题以及比较重要的部分. 一.OSI 七层模型 OSI 的七层模型从上到下依次是: 应用层 表示层 会话层 运输层 网络层 数据链路层 物理层 七层模型开 ...

  4. 【计算机网络】TCP协议经典十五连问(半连接、重传、滑动窗口、流量窗口、拥塞控制、SYN Flood攻击、粘包拆包)

    文章目录 1. 讲下TCP三次握手流程 2.TCP握手为什么是三次,不能是两次?不能是四次? 2.1 为什么握手不能是两次呢? 2.2 为什么握手不能是四次呢? 3. 讲下TCP四次挥手过程 4. T ...

  5. 计算机网络:TCP滑动窗口的流量控制和拥塞控制

    1. 前言 最近在研究网络通信底层通信原理,所以不得不复习一波计算机网络传输控制协议.那么对于程序开发人员,了解底层网络通信原理,对于我们理解BIO.NIO网络通信十分重要.所以对于程序开发人员来说, ...

  6. 计算机网络 | 谈谈TCP的流量控制与拥塞控制

    文章目录 一.TCP的流量控制 1.利用滑动窗口实现流量控制[⭐⭐⭐] 2.如何破解[死锁]局面❓ 二.TCP的拥塞控制 1.拥塞控制的一般原理 ① 解决网络拥塞的误区 ② 拥塞控制与流量控制的关系[ ...

  7. 【网络通信与信息安全】之深入解析TCP的“拥塞控制”原理

    一.前言 ① TCP 与 UDP 概念 在涉及到网络知识的面试中,TCP 和 UDP 是经常被提及的两个概念,它们是 OSI 模型中的运输层中的协议: TCP 全称为传输控制协议.这种协议可以提供面向 ...

  8. TCP协议-TCP的拥塞控制

    一.拥塞控制概述 TCP模块除了要进行流量控制外,还有一个重要的任务,就是提高网络利用率,降低丢包率,并保证网络资源对每条TCP连接的数据流的公平性.这就是拥塞控制要解决的问题. 在计算机网络中的链路 ...

  9. 计算机网络之TCP滑动窗口

    文章目录 计算机网络之TCP滑动窗口 1.详细讲一下TCP的滑动窗口 2. 聊聊 TCP 的滑动窗口 计算机网络之TCP滑动窗口 1.详细讲一下TCP的滑动窗口 在进行数据传输时,如果传输的数据比较大 ...

  10. 「 计算机网络 」TCP的粘包拆包问题

    「 计算机网络 」TCP的粘包/拆包问题 参考&鸣谢 大病初愈,一分钟看懂TCP粘包拆包 雷小帅 TCP 的粘包拆包以及解决方案 一乐说 文章目录 「 计算机网络 」TCP的粘包/拆包问题 一 ...

最新文章

  1. 为什么应该学习Kotlin
  2. 移动互联网的创新与91生态
  3. 对ZNNT-5NM力矩传感器进行标定
  4. CoreOS 和 Kubernetes 1.5 自主运行 Kubernetes、Container Linux
  5. flink on yarn两种提交模式
  6. 如何模拟鼠标的拖拽行为.
  7. java parseint null_java.lang.NumberFormatException: null Integer.parseInt的方法错误 具体问题代码在补充 到底怎么更改...
  8. 1-1 顺序表操作集 (20 分)
  9. 05-雷海林-mysql备份原理与在TDSQL中的实践
  10. Linux 打包 压缩 解压缩 命令
  11. NSDate的简单用法
  12. 使用 Linux 15 年后,我重新回到 Windows:感觉非常糟糕
  13. 明白了一个重要的道理
  14. 防止图片盗链和资源恶意下载
  15. RAC中参数文件的配置
  16. jedis操作set_使用 JedisAPI 操作 Redis
  17. 管理学基础 形成性考核一
  18. css的优先级及复合选择器权重计算
  19. 《时空幻境》Braid.v1.010.r2-RES-patch
  20. 提升生产力,7 款好用的原型图工具推荐给你

热门文章

  1. Flex ANE介绍
  2. python格式化字符串固定宽度_python – 格式化固定宽度的字符串(unicode和utf8)
  3. 无线局域网安全(一)———WEP加密
  4. 自动化运维工具inception+archer
  5. springboot 内存参数 启动
  6. 解决qt.qpa.plugin: Could not load the Qt platform plugin “xcb“ in ““ even though it was found.问题
  7. 桐桐的新闻系统【模拟】
  8. UPC 桐桐的爬山计划
  9. 找到了airdrop无法发现对方的原因了,原因你想不到!
  10. Windows System32下常见快捷指令