No.1 TCP/IP基础
No.2 常见面试题
TCP与UDP的区别:
①TCP协议是有连接的,有连接的意思是开始传输实际数据之前TCP的客户端和服务器端必须通过三次握手建立连接,会话结束之后通过四次挥手结束连接。而UDP是无连接的
②TCP协议保证数据按序发送,按序到达,提供超时重传来保证可靠性,但是UDP不保证按序到达,甚至不保证到达,只是努力交付,即便是按序发送的序列,也不保证按序送到。
③TCP有流量控制和拥塞控制,而UDP没有,所以UDP及时网络拥堵客户端的发送速率也不会有影响
④TCP协议所需资源多,TCP首部需20个字节(不算可选项),UDP首部字段只需8个字节。
⑤TCP只支持一对一通信,而UDP支持一对一,一对多,多对多通信
⑥TCP是面向字节流,可靠的服务,UDP是面向报文,不可靠的服务
⑦TCP注重数据安全性,UDP数据传输快,因为不需要连接等待,少了许多操作,但是其安全性却一般
请详细介绍一下TCP协议建立连接和终止连接的过程?
建立一个TCP连接时,会发生下述情形:
1、服务器端必须做好准备接受外来的连接。这通常通过 socket(), bind(), listen() 三个函数来完成的。我们称之为 被动打开(passive open).
2、客户端通过调用connect发起主动打开(active open)。这导致客户端TCP发送SYN同步分节。它告诉服务器客户端在(待建立的)连接中发送的数据的初始化序列号。通用SYN分节不携带数据,
3、服务器必须确认(ACK) 客户端的SYN,同时自己也得发送一个SYN分节,它含有服务器将在统一连接中发送的数据的初始化序号。服务器在单个分节中发送SYN和对客户端SYN的ACK确认。
4、客户端必须确认服务器的SYN。
TCP连接的终止:1、某个应用程序首先调用close,主动关闭(active close) 该端的TCP于是发送一个FIN分节,表示数据发送完毕。2、接收到这个FIN的对端执行被动关闭(passive close)。这个FIN是TCP确认。它的接收也作为一个文件结束符(end of file) 传递给接收端的应用程序(放在排队等候应用进程接收的任何其他数据之后),因为FIN的接收意味着接收端应用程序在相应连接上再无额外数据可以接收。3、一段时间以后,接收到这个文件结束符的应用进程将调用close关闭它的套接字。这导致它的TCP也发送一个FIN。4、接收这个最终FIN的原发送端TCP(即执行主动关闭的一端)确认这个FIN三次握手建立连接时,发送方再次发送确认的必要性?采用三次握手是为了防止失效的连接请求报文段突然又传送到B,而产生错误。失效的连接请求报文段:主机A发出的连接请求没有得到主机B的确认,于是过了一段时间,主机A又向主机B发送新的连接请求,且建立成功,完成数据传输。考虑到这一种情况,主机A第一次发送的连接请求并没有丢失,而是因为网络节点长时间滞留导致延迟到达主机B,主机B以为是主机A的新连接请求,于是主机B发送了确认请求给A,而A并不会理会B的这个确认请求,主机B就会一直在等待主机A发送数据,导致了主机B的资源浪费。就爱阅读www.92to.com网友整理上传,为您提供最全的知识大全,期待您的分享,转载请注明出处。
来源: http://www.92to.com/bangong/2017/02-28/17817915.html