网络编程基础知识

1、TCP建立的三次握手,为什么不是两次或者四次?
握手过程:C向S发送一个Seq=X序列将SYN置为1,S收到后返回一个ACK=X+1,Seq=Y,将SYN置为1,C收到后返回ACK=Y+1,Seq =Z这样就建立了连接
如果两次:已经失效的连接请求报文段,C发出的第一个连接请求在连接释放后才到达,此时S会认为是一个新的请求,于是S向C发送确认报文,而C并不理会S的确认报文,S就会一直等待C的数据,占有资源,而三次握手可以避免这种情况发生;

2、TCP的四次挥手?
TCP是全双工通信模式,主机1发出FIN报文说明主机1没有数据要发送了,但这时,主机2还是可以接收主机1的报文的,当主机2返回一个ACK报文时,表示主机1没有数据要发送了,但主机2还可以给主机1发送数据,当主机2也发送FIN报文时,通知主机1告知主机2没有数据要发送了,主机1就向主机2发送一个ACK,这时TCP就会断开连接。

3、TCP和UDP有什么区别?

UDP(User Datagram Protocol) TCP(Transmission Control Protocol)
1)TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接
2)TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付
3)TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的
UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等)
4)每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信
5)TCP首部开销20字节;UDP的首部开销小,只有8个字节
6)TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道

4、什么是TCP的粘包?

粘包和拆包都是TCP在传输数据包的过程中可能发生的现象,客户端发送多个不同数据包时,服务器端当做一个数据包接收,也就是粘包,也成为数据的无边界性

原文地址:https://www.cnblogs.com/xqn2017/p/8029439.html