协议(一)——TCP协议三次握手四次挥手

首先,介绍一下TCP/IP分层模型(百度上的图)

TCP/IP分层模型分为四层,从下到上依次为网络接入层、网络层、传输层和应用层。    

    【1】网络接入层:将需要互联的节点接入到网络中,为数据传输提供条件。

    【2】网络层:找到要传输数据的目标节点(ip地址)

    【3】传输层:实际传输数据

    【4】应用层:使用接收到的数据

TCP/IP并不是指这个体系结构中只有TCP和IP两个协议!

    【1】B/S架构中网络接入层没有协议;

    【2】网络层协议:IP协议

    【3】传输层协议:TCP协议(面向连接)、UDP协议(面向无连接)

    【4】应用层协议:HTTP协议、FTP协议等

    TCP协议是传输层的面向连接的协议,用于进行数据传输。所谓面向连接,就是在传输数据之前应当建立连接,就像我们打电话,首先要将电话拨通。而相比之下的UDP协议是面向无连接的,就像是发短信,可以直接进行发送而无需在意对方是否关机。

    TCP协议进行传输之前需要建立连接,即“三次握手”,关闭连接时要进行“四次挥手”。

三次握手:

    TCP的两个序号和三个标志位:

    【1】seq:sequence number的缩写,表示传递数据的序号。TCP传输数据时会给每一个字节编号,发送数据时会将数据的第一个序号发送给对方,接收方根据序号检查是否接收完整了。如果没有接收完整需要进行重新发送。

    【2】ack:acknowledge number的缩写,意为:确认号。有两层意思:第一、要求对方发送的下一个数据是从以ack值为序号的字节开始的;第二、ack之前的数据已经接收成功。

    【3】ACK:确认位。只有当ACK=1时ack才有效。第一次发送请求时因为没有开始发送数据不需要指定服务器下一条数据的起始位置,所以ACK=0.

    【4】SYN:同步位。用于在建立连接时同步序号。

    【5】FIN:终止位,在数据传输结束时申请关闭连接。

下面再来理解三次握手和四次挥手:

三次握手:


四次挥手:


(图片来源:百度)

    TCP三次握手的前两次握手可以确保服务器可以正确接收并返回请求,后两次握手可以确保客户端可以正确接收并正确返回。

    四次挥手的前两次可以确保客户端终止连接,后两次握手确保服务端终止连接。

    三次握手的一次连接需要客户端发送两次数据,效率较低,另外,如果在第二次挥手之后被恶意终止后会可能发生SYN Flood攻击。


    


    



阅读更多
个人分类: 协议
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

协议(一)——TCP协议三次握手四次挥手

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭