文章目录
- 网络编程
-
- TCP/ UDP
-
- TCP怎么保证可靠性?
- 简述一下TCP建立连接和断开连接的过程。
- TCP的三次握手和四次挥手的原因是什么?
- TCP,UDP的区别是什么?
- TCP,UDP的优缺点是什么?
- TCP,UDP适用场景?
- TCP相比UDP为什么是可靠的?
- 什么是TCP拥塞控制?以及达到什么情况的时候开始减慢增长的速度?
- 画出OSI和TCP/IP协议栈的对应关系
- TCP/IP数据链路层的交互过程是怎么样的?
- 传递到IP层怎么知道报文该给哪个应用程序,它怎么区分UDP报文还是TCP报文?
- 请你来介绍一下UDP的connect函数
- 请说说你对TCP连接中time_wait状态的理解
- 为什么要设置time_wait?
- 请你说一说TCP的模型,状态转移。
- 什么是OSI七层模型和TCP/IP四层模型?每层列举2个协议。
- 典型网络模型,简单说说有哪些?
- 搜索baidu,会用到计算机网络中的什么层?每层是干什么的?
- HTTP/IP
- SOCKET
- 客户端/服务端
网络编程
TCP/ UDP
TCP怎么保证可靠性?
TCP保证可靠性
-
序列号、确认应答、超时重传
数据到达接收方,接收方需要发出一个确认应答,表示已经收到该数据段,并且确认序号会说明了它下一次需要接收的数据序列号。如果发送发迟迟未收到确认应答,那么可能是发送的数据丢失,也可能是确认应答丢失,这时发送方在等待一定时间后会进行重传。这个时间一般是2*RTT(报文段往返时间)+一个偏差值。
-
窗口控制与高速重发控制/快速重传(重复确认应答)
TCP会利用窗口控制来提高传输速度,意思是在一个窗口大小内,不用一定要等到应答才能发送下一段数据,窗口大小就是无需等待确认而可以继续发送数据的最大值。如果不使用窗口控制,每一个没收到确认应答的数据都要重发。
使用窗口控制,如果数据段1001-2000丢失,后面数据每次传输,确认应答都会不停地发送序号为1001的应答,表示我要接收1001开始的数据,发送端如果收到3次相同应答,就会立刻进行重发;但还有种情况有可能是数据都收到了,但是有的应答丢失了,这种情况不会进行重发,因为发送端知道,如果是数据段丢失,接收端不会放过它的,会疯狂向它提醒…