[1] 讲一下TCP/IP协议?
TCP/IP协议模型在OSI七层模型的基础上,通过合并的方式,简化为四层,分别为应用层,传输层,网络层以及链路层。
我们通常的应用程序都工作在应用层,当各个应用之间通信时,传输层的TCP模块负责给HTTP数据添加TCP头部等信息;网络层的IP模块负责给HTTP数据添加IP头部等信息;链路层添加以太网首部等信息,并且通过电信号来传输数据包;然后数据包会依次经过对方的链路层,网络层,传输层以及应用层,实现数据的通信。
[2] 讲一下TCP和UDP协议的区别(5条)?
答:TCP和UDP协议都是传输层常见的协议,它们的主要区别如下所示:
- TCP提供面向连接的传输,通信前要先建立连接(三次握手机制); UDP提供无连接的传输,通信前不需要建立连接。
- TCP提供可靠的传输(校验,重排序,应答,丢弃重复,超时重发,滑动窗口); UDP不能保证传输的可靠。
- TCP面向字节流的传输,因此它能将信息分割成组,并在接收端将其重组; UDP是面向数据报的传输,没有分组开销。
- TCP提供拥塞控制; UDP则不提供。
- 每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信;
- 网络包中的TCP头部为20-60个字节;UDP头部只有8个字节。
数据报是通过网络传输的数据的基本单元,包含一个报头(header)和数据本身,其中报头描述了数据的目的地以及和其它数据之间的关系。数据报是完备的、独立的数据实体,该实体携带要从源计算机传递到目的计算机的信息,该信息不依赖以前在源计算机和目的计算机以及传输网络间交换
**总结:**TCP通信类似于打电话,接通了,确认身份后,开始通话;
UDP通信类似于村喇叭,很多村民都能听到。
[3] TCP协议是如何保证可靠传输的?
-
数据包校验:目的是检测数据在传输过程中的任何变化,若校验出包有错,则丢弃报文段并且不给出响应,这时 TCP 发送数据端超时后会重发数据;
-
对失序数据包重排序:既然 TCP 报文段作为 IP 数据报来传输,而 IP 数据报的到达可能会失序,因此 TCP 报文段的到达也可能会失序。TCP 将对失序数据进行重新排序,然后才交给应用层;
-
丢弃重复数据:对于重复数据,能够丢弃重复数据;
-
应答机制:当 TCP 收到发自 TCP 连接另一端的数据,它将发送一个确认(这个确认不是立即发送,通常将推迟几分之一秒);
-
超时重发:当 TCP 发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段;
-
滑动窗口:是一种流量控制技术。TCP连接每一方都有固定大小的缓冲空间,滑动窗口的大小意味这接收方有多大的缓存区接受数据。当接收缓冲池的大小发生变化时,要给对方发送更新窗口大小的通知,利用滑动窗口机制有效提高通信效率。