计算机网络ah,计算机网络学习(面试学习)(持续更新)

1. OSI 七层协议模型

应用层:向应用程序提供通信服务,如 http、ftp、smtp、DNS等

表示层:格式化数据、加密、解密等,如FTP允许你选择以二进制或ASCII格式传输

会话层:管理会话,控制会话的开始与结束

运输层:高层与低层的衔接,数据传输的单位是报文,报文过长时将其分割然后交给网络层,TCP/UDP

网络层:负责将数据从源送到目的地

数据链路层:控制网络层与物理层的通信,以帧为单位

物理层:以二进制数据的形式在物理媒体上传输

七层协议模型是一个理论模型,在实际应用中数据传输多变,因此该模型仅做参考作用

2. TCP/IP 四层协议模型

应用层 http

运输层TCP/UDP

网络层 IP

链路层

3. TCP/IP/UDP 等数据结构

TCP

edf505a275b03cf90016000cd2b6f534.gif

IP

c490091141d53ab5240c026cdded31b2.gif

UDP

78268db6ab0d53eb30a58aa6524e736c.png

Http

dc7eecc1bd9563f2c519dfcca85c7aa2.png

4. 数据传输中可能遇到的问题及解决办法(序列号是关键)

数据丢包通过确认应答ACK来验证,发送方没有收到确认应答表明数据丢失(也可能是ACK丢失或延迟),引发重传机制

数据重复通过序列号来辨认

数据完整性校验 每一个TCP数据包都有一个包校验字段

数据乱序 根据序列号来排序

5. 三次握手

0357e2402fd0aaa8ea2602197b626c52.png

6. 四次挥手

27fd7f53dcfbc788fa25dccd21da87cd.png

6.1 三次挥手?五次挥手?

有时候会出现三次挥手的情况,是因为第二次挥手和第三次挥手合并了,因为服务端没有数据继续传输,如

3d081dd1c5f9f3f4bf118f0b8124829c.png

至于五次挥手,想多了。。。没有的,如果抓包挥手过程中出现5个报文,那么那个多出来的ACK报文一定是前面某个报文的确认报文,一般就是挥手第一个FIN报文的前一个报文的ack

7. TCP的停止等待协议与滑动窗口协议

停止等待协议:每一个报文都要确认后才能发送下一个报文,效率低下

06ea5aacd2ff09c22160bd76a9e9b9cf.png

滑动窗口协议:延迟ACK的发送,等待接收量到窗口大小才发送,如果中间丢失某一个报文,则只会发送一个表示该丢失报文之前的报文被接收到的ACK确认,即要求发送方从丢失报文处开始发送

f08e058fec11eb72a61d3dfd02887bfd.png

8. 网络安全

1. 摘要算法

2. 对称加密

3. 非对称加密

9. Https原理

10. IP伪造

11. 传输层/网络层数据包的拆分与重组原理

传输层TCP会对数据进行分包,包的最大size由MSS决定,一般为1460字节,每一个包都有序列号,服务端收到后会按序列号来重组

网络层IP协议也会对传输层送来的包进行拆分,称为分片,包的大小由MTU来决定,在链路层每帧的大小限定为1500,即MTU一般为1500。也就是说,如果传输层送来的包大小大于1500,则ip层会对这个包进行分片。反之,如果包大小小于1500,则不会分片,由此我们可以看出TCP已经对包进行了拆分,每个包的大小都不会超过MTU,所以一般情况下使用TCP协议的包在IP层不会被分片。

UDP协议没有拆分功能,也就是说使用UDP协议的包基本上都会在IP层进行分片,一个IP数据报被拆分成多个报文,每个报文都有各自的IP头部,头部中有一个标识ID和段偏移量,服务端接收到后,具有相同ID的报文会被重组为一个IP数据报,段偏移量来确定报文的顺序。

12. 拥塞控制

注:cwnd -----由发送方维持的拥塞窗口大小,控制网络中的流量,rwnd-----接收窗口大小

ssthresh-----拥塞窗口门限

慢启动-----试探,慢慢增加cwnd(指数增长,一般为2倍数)

拥塞避免-----当cwnd > ssthresh时,改用拥塞避免算法,cwnd呈线性增长(cwnd++)

无论是在慢开始还是拥塞避免中,一旦出现网络拥堵(没有按时收到ACK)就会将ssthresh置为原来的一半(实际上有精确的算法来计算),cwnd置为 1,然后重新开始慢启动,以迅速降低网络拥堵

快速重传-----尽早重传未被确认的报文段,例如接收方收到了m2,m4,m5,m6,m7,没有收到m3,那么接收方会在收到m4,m5,m6—的时候重复发送m2的重复ACK。按规定,发送方连续收到三个重复确认(4个ACK)就不必等待m3超时重传,而是立即重传m3,这个方法能提高网络吞吐量约20%

注意此时发送方会认为网络很可能没有堵塞,因为收到重复ACK表明发送的报文顺利到达接收方

快速恢复-----当连续收到三个重复ACK时,快速重传生效后,将ssthresh减半,cwnd变为ssthresh减半后的数值,然后执行拥塞避免算法

实际上的cwnd还有一个上限rwnd,即cwnd不会超过rwnd

注:New Reno 算法有变化,Reno算法只考虑了丢失一个报文,若在一次网络拥塞中丢失了多个报文,会多次将cwnd和ssthresh减半,甚至cwnd < 3以致没有足够的ACK,只能等待超时重传,超时后cwnd会被置 1,ssthresh=cwnd/2,进入慢启动 ,大大降低了TCP传输效率。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值