Socket编程⾯试题
1、TCP和UDP的区别:
1)TCP提供⾯向连接的传输,通信前要先建⽴连接(三次握⼿机制);UDP提供⽆连接的传输,通信前不需要建⽴连接。
2)TCP提供可靠的传输(有序,⽆差错,不丢失,不重复);UDP提供不可靠的传输。
3)TCP⾯向字节流的传输,因此它能将信息分割成组,并在接收端将其重组;UDP是⾯向数据报的传输,没有分组开销。
4)TCP提供拥塞控制和流量控制机制;UDP不提供拥塞控制和流量控制机制。
2、流量控制和拥塞控制的实现机制:
1)TCP采⽤⼤⼩可变的滑动窗⼝机制实现流量控制功能。窗⼝的⼤⼩是字节。在TCP报⽂段⾸部的窗⼝字段写⼊的数值就是当前给对⽅设
置发送窗⼝的数据的上限。
在数据传输过程中,TCP提供了⼀种基于滑动窗⼝协议的流量控制机制,⽤接收端接收能⼒(缓冲区的容量)的⼤⼩来控制发送端发送的数
据量。
2)采⽤滑动窗⼝机制还可对⽹络进⾏拥塞控制,将⽹络中的分组(TCP报⽂段作为其数据部分)数量维持在⼀定的数量之下,当超过该数
值时,⽹络的性能会急剧恶化。传输层的拥塞控制有慢开始(Slow-Start)、拥塞避免(Congestion Avoidance )、快重传
(Fast Retransmit)和快恢复(Fast Recovery)四种算法。
拥塞: ⼤量数据报涌⼊同⼀交换节点(如路由器),导致该节点资源耗尽⽽必须丢弃后⾯到达的数据报时,就是拥塞。
3、重传机制:
TCP每发送⼀个报⽂段,就设置⼀次定时器。只要定时器设置的重发时间到⽽还没有收到确认,就要重发这⼀报⽂段。
TCP环境
报⽂往返时间不定、有很⼤差别
A、B在⼀个局域⽹络,往返时延很⼩
A、C在⼀个互联⽹内,往返时延很⼤
因此,A很难确定⼀个固定的、与B、C通信都适⽤的定时器时间
TCP采⽤了⼀种⾃适应算法。这种算法记录每⼀个报⽂段发出的时间,以及收到相应的确认报⽂段的时间。这两个时间之差就是报⽂段的往
返时延。将各个报⽂段的往返时延样本加权平均,就得出报⽂段的平均往返时延T。
4、滑动窗⼝机制:
TCP 采⽤⼤⼩可变的滑动窗⼝进⾏流量控制。窗⼝⼤⼩的单位是字节。
在 TCP 报⽂段⾸部的窗⼝字段写⼊的数值就是当前给对⽅设置的发送窗⼝数值的上限。发送窗⼝在连接建⽴时由双⽅商定。但在通信的过
程中,接收端可根据⾃⼰的资源情况,随时动态地调整对⽅的发送窗⼝上限值(可增⼤或减⼩)。
5、多线程如何同步:
临界区、互斥区、事件、信号量四种⽅式
临界区(Critical Section)、互斥量(Mutex)、信号量(Semaphore)、事件(Event)的区别
1)、临界区:通过对多线程的串⾏化来访问公共资源或⼀段代码,速度快,适合控制数据访问。在任意时刻只允许⼀个线程对共享资源进
⾏访问,如果有多个线程试图访问公共资源,那么在有⼀个线程进⼊后,其他试图访问公共资源的线程将被挂起,并⼀直等到进⼊临界区的
线程离开,临界区在被释放后,其他线程才可以抢占。
2)、互斥量:采⽤互斥对象机制。 只有拥有互斥对象的线程才有访问公共资源的权限,因为互斥对象只有⼀个,所以能保证公共资源不会
同时被多个线程访问。互斥不仅能实现同⼀应⽤程序的公共资源安全共享,还能实现不同应⽤程序的公共资源安全共享 .互斥量⽐临界区复
杂。因为使⽤互斥不仅仅能够在同⼀应⽤程序不同线程中实现资源的安全共享,⽽且可以在不同应⽤程序的线程之间实现对资源的安全共
享。
3)、信号量:它允许多个线程在同⼀时刻访问同⼀资源,但是需要限制在同⼀时刻访问此资源的最⼤线程数⽬ .信号量对象对线程的同步⽅
式与前⾯⼏种⽅法不同,信号允许多个线程同时使⽤共享资源,这与操作系统中的PV操作相同。它指出了同时访问共享资源的线程最⼤数
⽬。它允许多个线程在同⼀时刻访问同⼀资源,但是需要限制在同⼀时刻访问此资源的最⼤线程数⽬。