计算机网络-TCP/IP协议相关知识点

来源:互联网 发布:手机屏幕色彩校正软件 编辑:程序博客网 时间:2024/05/14 07:23

此次为准备腾讯的实习生面试而准备(移动客户端开发岗)。


TCP/IP 参考模型或者说体系结构:(从上往下)应用层、传输层、网络层/IP层、 网络接口层(数据链路层和物理层)。

重要概念:

应用层:实际是应用进程,协议有http,SMTP,ftp,DNS等(也可称为服务类型);客户-服务器方式:客户端是服务请求方,服务器是服务提供方。

传输层:协议有TCP,UDP;主机中两个进程之间(端到端)的通信;端口号(用来标志应用层的进程,如http的端口号是80,ftp的端口号是21);传输单位是报文段:TCP报文段 或UDP 用户数据报。

网络层:协议是IP协议;分组交换网上不同主机之间的通信;32位的IP地址;传输单位是分组或包:IP分组或IP数据报;选择合适的路由。

数据链路层:停止等待协议,ARQ等;相邻结点(主机或路由器)间通信;48位的物理地址;传输单位是帧。

物理层:透明地传输比特流(表示经实际电路传输后的比特流没有发生变化)。


几个知识点:

1. TCP与UDP 区别:

(1)概念:TCP是传输控制协议,UDP是用户数据报协议。

(2)可靠性:TCP面向连接,提供可靠交付;UDP无需建立连接,尽最大努力交付,不可靠交付。

(3)TCP报文段走的是可靠的全双工信道:有序、无差错、无丢失、无重复。

(4)传输大小:UDP每次传输的数据必须限定在64KB之内,TCP可以按照统一格式传输大量数据。

(5)传输效率:UDP没有拥塞控制,TCP传输效率不如UDP高,UDP适用于允许丢失一些数据但不允许太大时延的应用,如视频会议。

(6)TCP就像打电话,UDP就像写信。

2. TCP三次握手(建立连接):

(1)采用客户服务器方式建立连接。

(2)过程:客户端发送建立连接请求->服务器端同意并发回确认->客户端再发送确认(此时TCP连接已建立)。

(3)为什么要发送第三个报文段:主要防止已失效的连接请求报文段突然又传送到了服务器端(网络堵塞时,连接请求报文段可能被延误),因而产生错误。

3. TCP释放连接:

主机A发送连接释放请求->主机B同意并发回确认(此时连接处于半关闭状态:主机B不再接受主机A发送的数据,但主机A可以接受主机B发送的数据)->主机B发送连接释放请求->主机A同意并发回确认(此时TCP连接完全释放)。

4. TCP重要功能:

(1)流量控制:

TCP采用大小可变的滑动窗口进行流量控制(控制向网络注入分组的速率)。

(2)拥塞控制:

发送端利用发送窗口(这个窗口取决于对方的接收窗口)调节向网络注入分组的速率不仅是为了使接收端来得及接收,而且还是为了对网络进行拥塞控制;发送窗口的上限值=Min[ 接收端窗口,拥塞窗口 ]

1)慢开始和拥塞避免:

开始算法:拥塞窗口cwnd初始值设为1,发送端每收到一个对新报文段的确认ACK,就使发送端的拥塞窗口加1(cwnd按指数规律增长)。
拥塞避免算法:发送端的拥塞窗口cwnd每经过一个往返时延RTT就增加一个MSS(最大报文段)大小(不管在时间RTT内收到了几个ACK),这样cwnd按线性规律增长(即加法增大)。
无论在慢开始阶段还是拥塞避免阶段,只要发送端发现网络出现拥塞(根据就是没有按时收到ACK或收到了重复的ACK),就要将慢开始门限ssthresh设置为出现拥塞时的发送窗口值(即Min[ 接收端窗口,拥塞窗口 ])的一半(不能小于2)(即乘法减小)。
故整个过程如下:
当cwnd < ssthresh 时,使用慢开始算法;
当cwnd > ssthresh 时,使用拥塞避免算法,此时设置cwnd = ssthresh ;
当cwnd = ssthresh 时, 既可以使用慢开始算法,也可以使用拥塞避免算法;
当发生网络拥塞(超时或收到重复ACK)时,ssthresh = 1/2 * 发送窗口大小 = 1/2 * Min[ 接收端窗口,拥塞窗口 ],然后执行慢开始算法。

2)快重传和快恢复

第一种拥塞控制算法存在一个缺点:有时一条TCP连接会因等待重传计时器的超时而空闲较长的时间。故又增加了快重传和快恢复的拥塞控制方法。
快重传算法规定:发送端只要一连收到三个重复的ACK即可断定有分组丢失(实际收到对某一个报文段的4次确认ACK,其中三个是重复的),就应该立即重传丢失的报文段而不必等待为该报文段设置的重传计时器的超时。不难看出,快重传并不是取消重传计时器,而是在某些情况下可以更早地重传丢失的报文段。这里如何得到三个重复的ACK 可以参考教材里的例子。
与快重传配合使用的快恢复算法:
① 当发送端收到连续三个重复的ACK时,就按照前面”乘法减小“重新设置ssthresh,这点跟慢开始算法是一样的。
② 考虑到如果网络出现拥塞的话就不会收到好几个重复的确认,发送发现在认为网络可能没有出现拥塞,故此时不执行慢开始算法,而是将拥塞窗口cwnd设置为ssthresh大小,然后开始执行拥塞避免算法。
更详细的TCP拥塞控制可参考文章:TCP的拥塞控制

5. http协议(超文本传送协议):

http是一个面向事务的客户服务器协议,本身也是无连接的。注:事务指一系列的信息交换,而这一系列的信息交换是一个不可分割的整体,要么所有的信息交换都完成,要么一次交换都不进行。

详见参考文章:HTTP协议详解(真的很经典)

6. 路由器:只有下三层协议,没有传输层协议。



0 0
原创粉丝点击