编程必备基础 - 面试笔试考点总结 - 计算机网络 (3)传输层

=============

UDP(User Datagram Protocol: 用户数据报协议)是一个非常简单的协议

1. 数据报

数据报是应用层传输过来的完整的数据

UDP对于数据报:不拆分、不合并,直接封装传输。

2. UDP的特点

(1)UDP是无连接协议(不用提前建立连接)

(2) UDP不能保证可靠的交付数据(“想发就发”,“无法保证数据在网络中是否丢失”)

(3)UDP是面向报文传输的(不做修改直接发送)

(4)UDP没有拥塞控制(不会感知网络拥塞,无论任何情况都会持续发送数据)

(5)UDP的首部开销很小

三、TCP协议详解

=============

TCP(Transmission Control Protocol: 传输控制协议)是计算机网络中非常复杂的一个协议

1. TCP协议的特点


(1)TCP是面向连接的协议

(2)TCP的一个连接有两端(点对点通信)

(3)TCP提供可靠的传输服务

(4)TCP协议提供全双工的通信(两者可以同时可以接收和发送数据)

(5)TCP是面向字节流的协议

2. TCP头部


(1)序号:0~2^32-1;一个字节一个序号;数据首字节序号

(2)确认号:一个字节一个序号;期望收到数据的首字节序号(确认号为N:则表示N-1序号的数据都已经收到)

(3)TCP标记:占6位,每位各有不同意义

(4)窗口:占16位:0~2^16-1;窗口指明允许对方发送的数据量

(5)紧急指针:紧急数据(URG=1);指定紧急数据在报文的位置

3. 可靠传输的基本原理


1)停止等待协议

发送一个消息后,就停止发送,等待,确认之后载发送下一个消息。

停止等待协议是最简单的可靠传输协议; 停止等待协议对信道的利用效率不高。

超时重传(三种情况)

(1)发送的消息在路上丢失了

(2)确认的消息在路上丢失了

(3)确认的消息很久才到

超时定时器:每发送一个消息,都需要设置一个定时器

2)连续ARQ协议

ARQ(Automatic Repeat reQuest:自动重传请求)

既然单个发送和确认效率低, 可不可以批量发送和确认?使用滑动窗口,可以提高信道利用率。

4. TCP协议的可靠传输


TCP的可靠传输基于连续ARQ协议; TCP的滑动窗口以字节为单位

选择重传需要指定需要重传的字节; 每一个字节都有唯一的32位序号

5. TCP协议的流量控制


流量控制指让发送方发送速率不要太快

流量控制是使用滑动窗口来实现的

例子:发送方发送消息seq=1两次,共发送200字节;接收方发送确认消息,表示还可以发送300字节;

但是消息丢失会引起等待(死锁)— 但是不会重传怎么办?

**坚持定时器:**解决上述死锁问题。

当接收到窗口为0的消息,则启动坚持定时器;坚持定时器每隔一段时间发送一个窗口探测报文

6. TCP的拥塞控制机制


一条数据链路经过非常多的设备;数据链路中各个部分都有可能成为网路传输的瓶颈;

网络对硬件设备的性能要求大于可用资源,因此会导致拥塞。

流量控制考虑点对点的通信量的控制;拥塞控制考虑整个网络,是全局性的考虑

报文超时则认为是拥塞;

1)慢启动算法

由小到大逐渐增加发送数据量; 每收到一个报文确认,就加一

2)拥塞避免算法

维护一个拥塞窗口的变量; 只要网络不拥塞,就试探着拥塞窗口调大

7. TCP的建立(三次握手)


(1)第一次握手:连接请求报文,seq=x

(2)第二次握手:接收方 SYN=1连接请求,ACK=1 对序列号确认,ack确认号,希望收到x+1的序列号的值,同时报文也会携带自己的序列号y

(3)第三次握手: 发送方ACK=1 报文的确认号是有用,是y+1希望收到y+1的数据,并且同步自己的序列号为x+1

连接建立之后,还同步了各自的序号。

**为什么发送方要发出第三个确认报文呢?**已经失效的连接请求报文传送到对方,引起错误

同样的请求会建立两次连接,当需要三次握手时,一旦建立连接,发送方不会对连接方的消息做出回应。

8. TCP连接的释放(四次挥手)


(1)FIN=1需要释放连接

(2)连接请求已收到,并且对消息确认(还可以发送数据)

(3)FIN=1可以释放连接 ACK=1 重复对第一个报文确认

(4)收到释放连接信号,等待一段时间 没有问题,就进入关闭状态。

**等待计时器:**时长2MSL,

MSL(Max Segment Lifetime): 最长报文段寿命;MSL建议设置为2分钟

为什么需要等待2MSL?

(1)确保发送方的ACK可以到达接收方

(2)最后一个报文没有确认

(3)2MSL时间内没有收到,则接收方会重发

(4) 确保当前连接的所有报文都已经过期

9. 套接字与套接字编程


使用端口(Port)来标记不同的网络进程

端口(Port)使用16比特位表示(0~65535)

套接字(Socket)是抽象概念,表示TCP连接的一端;通过套接字可以进行数据发送或接收

TCP连接由两个套接字组成

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
img

最后

前15.PNG

前16.PNG

由于文档内容过多,为了避免影响到大家的阅读体验,在此只以截图展示部分内容

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
img

将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
[外链图片转存中…(img-13aTtC1T-1712960989487)]

最后

[外链图片转存中…(img-UD6nwdpN-1712960989488)]

[外链图片转存中…(img-AAeknKhn-1712960989488)]

由于文档内容过多,为了避免影响到大家的阅读体验,在此只以截图展示部分内容

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-yjpnSRtQ-1712960989488)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值