老男孩教育专注IT教育10余年,只培养IT技术精英

全国免费咨询电话(渠道合作):400-609-2893

TCP/IP协议是什么?老男孩Python

老男孩IT教育

常见问题

2021年6月18日 17:59

在如今互联网发展迅速的时代,出现了很多热门的编程语言,但不论哪种语言,都会接触到各种协议,今天为大家讲解TCP/IP协议,对这方面感兴趣的或者还不太了解的小伙伴们,可以通过本篇文章,对它有一定的了解和认知,那么请看下文:

       在如今互联网发展迅速的时代,出现了很多热门的编程语言,但不论哪种语言,都会接触到各种协议,今天为大家讲解TCP/IP协议,对这方面感兴趣的或者还不太了解的小伙伴们,可以通过本篇文章,对它有一定的了解和认知,那么请看下文:

       TCP/IP协议全称为Transmission Control Protocol/Internet Protocol,其中包含了一系列构成互联网基础的网络协议,是Internet的核心协议。其中分成了四层,链路层、网络层、传输层和应用层。

TCP/IP

       TCP/IP协议是按照层次来的,由上到下、层层递进,最上面的为应用层,里面包括http、ftp等我们熟悉的协议,第二层就是传输层,我们常说的TCP和UDP协议就在这一层,第三层是网络层,IP协议就在此,它负责给数据加上IP地址和确定传输的目标,第四层是数据链路层,它负责为待传送的数据加入一个以太网协议头,为最后的数据传输做准备。

       TCP连接的建立与终止是怎样的?

       小伙伴们都听过三次握手吧,那么它具体是什么?TCP面向连接,也就是无论谁发送数据,都必须先进行一次连接,通俗讲,就是打声招呼。

       第一次握手->建立连接,客户端发送请求,将SYN设置为1,Sequence Number为x,客户端进入SYN_SEND状态,等待服务器的确认。

       第二次握手->服务器收到请求后,接收SYN值,同时进行确认,还需要继续发送SYN信息,将SYN设置为1,Sequence Number为y,服务器将所有信息放到一个报文段,也就是SYN+ACK中,再一起发送给客户端,与此同时服务器进入SYN_RECV状态。

       第三次握手->客户端收到服务器的SYN+ACK报文段,将Acknowledgment Number设置为y+1,再向服务器发送ACK报文段,发送完毕后,进入ESTABLISHED状态,完成三次握手。

       为什么需要三次握手?为了防止已经失效的请求再次传送到服务器从而产生错误。

       那么进行连接后,传输完毕就需要断开连接,这时候就提到了四次分手

       第一次分手->客户端或服务端(主机1),设置Sequence Number后,向主机2发送一个FIN报文段,此时,主机1进入FIN_WAIT_1状态,这表示主机1没有数据要发送给主机2了。

       第二次分手->主机2收到了主机1发送的FIN报文段,向主机1回一个ACK报文段,Acknowledgment Number为Sequence Number加1,主机1进入FIN_WAIT_2状态,主机2告诉主机1,我“同意”你的关闭请求。

       第三次分手->主机2向主机1发送FIN报文段,请求关闭连接,同时主机2进入LAST_ACK状态。

       第四次分手->主机1收到主机2发送的FIN报文段,向主机2发送ACK报文段,然后主机1进入TIME_WAIT状态,主机2收到主机1的ACK报文段以后,就关闭连接,此时,主机1等待2MSL后依然没有收到回复,则证明Server端已正常关闭,那好,主机1也可以关闭连接了。

       对于想要了解更多或者对python课程感兴趣的小伙伴们,欢迎大家来老男孩教育,我们在北京、深圳均设有分校,课程分为线上、线下班,可以根据自身情况进行选择,我们一直秉承保证教学质量才是硬道理的发展观,坚持做正确的事,用心帮助每一位学员通过在老男孩努力学习获得体面的工作和生活。

       推荐阅读:

       Python垃圾回收机制是什么?老男孩Python

       Python如何优化及提升运行速度?Python学习

       Python必备的GUI库有哪些?老男孩Python

本文经授权发布,不代表老男孩教育立场。如若转载请联系原作者。