计算机网络 随心笔记(传输层)

news/2024/5/18 12:36:07 标签: udp, tcp/ip

文章目录

  • 计算机网络随心笔记(传输层)
      • 01、应用层协议很多,传输层就两个协议,如何使用传输层两个协议标识应用层协议呢?
      • 02、服务和端口的关系
      • 03、客户端端口的作用
      • 04、端口和网络安全的关系
      • 05、UDP协议特点
      • 06、UDP的首部格式
      • 07、TCP、UDP为什么要有伪首部?
      • 08、TCP协议特点
      • 09、TCP报文首部格式
      • 10、TCP可靠传输的实现:停止等待协议
      • 11、TCP连续ARQ协议和滑动窗口协议
      • 12、以字节为单位的滑动窗口技术详细图
      • 13、拥塞控制
        • 1、慢开始
        • 2、拥塞避免
        • 3、快重传
        • 4、快恢复

计算机网络随心笔记(传输层)

01、应用层协议很多,传输层就两个协议,如何使用传输层两个协议标识应用层协议呢?

  • 传输层协议加上一个端口号来标识一个应用层协议

image-20210928144324937

02、服务和端口的关系

  • 客户端通过IP地址定位服务器,通过协议和端口号定位服务器上的服务

image-20210928144459370

03、客户端端口的作用

  • 客户端软件可以同时访问多个服务器,客户端会为每个出去的流量分配一个唯一的源端口

image-20210928145447650

04、端口和网络安全的关系

  • 客户端和服务器之间的通信使用应用层协议,应用层协议使用传输层协议 + 端口标识,如果网络设备封掉TCP 或UDP的某个端口,就不能访问其对应的服务,就可以实现网络安全。

image-20210928155422090image-20210928155435931

因此,我们为保障服务器网络安全,只开放必要的端口。(windows上可以通过设置TCP/IP筛选和windows防火墙来实现)

另外,可以在网络设备上控制端口。

image-20210928155855725

05、UDP协议特点

  1. 无连接。减少了开销和发送数据之前的时延
  2. 尽最大努力交付。因此主机不需要维持复杂的链接状态表(其中有很多参数),通信的两端不用保持连接,节省了系统资源
  3. UDP面向报文。发送方的UDP对应用程序交下来的报文,在添加首部后就向下交付给网络层。UDP对应用层交下来的报文既不合并也不拆分,而是保留这些报文的边界
  4. UDP没有拥塞控制。当网络出现拥塞时不会使源主机的发送速率降低
  5. UDP支持一对一、一对多、多对一和多对多的交互通信
  6. UDP的首部开销小,只有8字节(TCP首部20字节)

06、UDP的首部格式

image-20210928162835741

07、TCP、UDP为什么要有伪首部?

伪首部只用于计算校验和

08、TCP协议特点

  1. 面向连接的传输层协议
  2. 每条TCP连接只能有两个端点(一对一)
  3. TCP提供可靠交付的服务。即通过TCP连接传送的数据,无差错、不重复、不丢失、不失序
  4. TCP提供全双工通信。TCP允许通信双方的应用程序在任何时候都能发送数据。TCP连接的两端都设有发送缓存和接收缓存,用来临时存放双方通信的数据。
    在发送时,应用程序把数据传送给TCP的缓存后,就可以做自己的事了,而TCP在合适的时候把数据发送出去;
    在接收时,TCP把收到的数据放入缓存,上层的应用进程在合适的时候读取缓存中的数据。
  5. 面向字节流。“流”指的是流入到进程或从进程中流出的字节序列

image-20210928164540500

09、TCP报文首部格式

image-20210928165301063

序号的意义

image-20210928165422015

10、TCP可靠传输的实现:停止等待协议

对比原来的“停止等待协议” 和改进后的“连续ARQ协议和滑动窗口协议”

image-20210928171251708

11、TCP连续ARQ协议和滑动窗口协议

ARQ协议,即自动重传请求(Automatic Repeat-reQuest),是OSI模型中数据链路层和传输层的错误纠正协议之一。它通过使用确认超时这两个机制,在不可靠服务的基础上实现可靠的信息传输。如果发送方在发送后一段时间之内没有收到确认帧,它通常会重新发送。

ARQ协议分 停止等待ARQ协议 和 连续ARQ协议 ,连续ARQ协议了采用滑动窗口方法,又分为 后退N步协议 和 选择重传协议。

https://blog.csdn.net/guoweimelon/article/details/50879588

12、以字节为单位的滑动窗口技术详细图

image-20210928173346018

image-20210928173657083

TCP 通信时,如果发送序列中间某个数据包丢失, TCP 会通过重传最后确认的分组后续的分组,这样原先已经正确传输的分组也可能重复发送,降低了 TCP 性能。

为改善这种情况,发展出 SACK Selective Acknowledgment ,选择确认)技术,使TCP 只重新发送丢失的包,不用发送后续所有的分组,而且提供相应机制使接收方能告诉发送方哪些数据丢失,哪些数据已经提前收到等。

13、拥塞控制

1、慢开始

image-20210929131933639

2、拥塞避免

image-20210929132008108

3、快重传

image-20210929132128670

  • 快重传算法首先要求接收方每收到一个失序的分组后就立即发出重复确认,为的是使发送方尽早知道有部分分组没有到达对方,而不是等待自己(接收方)发送数据时才进行捎带确认。
  • 快重传算法规定,发送方只要一连收到三个重复确认就应当立即重传对方尚未收到的报文段,而不必等待到 该报文段 设置的重传计时器到期。

4、快恢复

image-20210929132527929

可靠传输

流量控制

拥塞控制


http://www.niftyadmin.cn/n/1664742.html

相关文章

【并发编程】知识脉络

一级菜单二级菜单三级菜单线程底层原理【图解】什么是线程?线程模型基础知识计算机内存模型Java内存模型JMM是什么?​​​​​​Java共享内存模型下并发编程问题与分析_披甲上战场的博客-CSDN博客synchronize关键字如何使用底层原理锁升级过程一图读懂ja…

【Python学习笔记】20:numpy广播、分段函数、频次统计

用int64()取整 >>> xnp.random.rand(10)*50 >>> x array([ 23.22184111, 32.50075356, 42.89971884, 29.7081743 ,9.59936762, 13.48713739, 31.01003042, 9.83144093,32.46756683, 32.90776814]) >>> np.int64(x) #取整(不作四舍五入) ar…

linux任务计划cron、chkconfig工具、systemd管理服务、unit介绍、target介绍

linux任务计划cron [roottest-7 ~]# crontab -e no crontab for root - using an empty one 每天的凌晨3点 执行这个 0 3 * * * /usr/bin/touch /root/123.txt &>/dev/null 启动服务 [roottest-7 ~]# systemctl start crond 基本格式 : *  *  *  *  *  comman…

【Python学习笔记】21:numpy傅里叶变换

一个简单的傅里叶变换 >>> import numpy as np >>> import matplotlib.pyplot as plt >>> xnp.linspace(0,2*np.pi,50) >>> x array([ 0. , 0.12822827, 0.25645654, 0.38468481, 0.51291309,0.64114136, 0.76936963, 0.897…

公平锁非公平锁对比表格

前言 小白看ReentrantLock源码学底层原理 文章中主要过了一遍reentrantlock的公平锁的源码。现总结一下理论。 公平锁&非公平锁 公平锁非公平锁源码异同 都有两个主要方法:lock()加锁方法 和 tryAcquire()锁竞争的方法;并且这两个方法实现的不一…

解决linux birt 图表乱码异常

为什么80%的码农都做不了架构师?>>> 1.将fallback.zip 压缩文件夹解压,上传到linux jdk 安装目录jdk1.7.0_79/jre/lib/fonts下 2.在重启tomcat服务 转载于:https://my.oschina.net/111222233/blog/1523878

CentOS中出现xxx is not in the sudoers file解决方法

问题: 在终端中输入sudo后会提示“XXX is not in the sudoers file. This incident will be reported.” 解决办法: 用sudo时提示"xxx is not in the sudoers file. This incident will be reported.其中XXX是你的用户名,也就是说你的用…

【Python学习笔记】22:numpy文件读写和一些常量

读写文件 >>> import numpy as np >>> xnp.random.rand(4,10) #创建4行10列的数组 >>> np.save(data.npy,x) #保存到文件中去 >>> ynp.load(data.npy) #读出来 >>> y array([[ 0.05172888, 0.78455176, 0.99746837, 0.980905…