【Python基础知识】TCP/IP协议详解

发布 : Python培训      来源:

2021-08-30 16:36:31

如今,互联网一词已被人们所熟知,它广泛应用于人类生活的各个方面。但是究其历史,互联网是由1971年的ARPANET发展而来的。ARPANET是一个计算机网络,它的出现比互联网要早得多。

网络中的计算机为了彼此之间进行通信形成一个通信网络,就必须首先制定网络协议。早期的计算机网络,根据厂商的不同有着自己规定的一套协议,Microsoft、IBM和Apple等公司都有各自的互不兼容的一套网络协议。这就像一群人有的说中文,有的说英语,有的说德语,说同一种语言的人之间可以交流,而说不同语言的人之间就难以交流了。

网络协议的不兼容阻碍了互联网的发展。而随着网络的发展,规模和覆盖面越来越大,从而形成了统一的标准OSI(开放系统互连)。OSI模型从上到下具有7层结构,分别是应用层、表示层、会话层、运输层、网络层、数据链路层和物理层。其中,应用层定义了应用程序之间通信的协议,运输层主要用来确保端到端的数据通信正常,网络层负责在各个主机之间传输数据。

在互联网所使用的各种网络协议中,最重要的是TCP和IP协议。如今人们常说的TCP/IP协议并不一定单指TCP和IP这两个具体的协议,而通常是表示互联网所使用的整个TCP/IP协议族。

下面介绍一下TCP/IP协议。

计算机进行通信时,类似于现实中的邮政通信,计算机通信的双方必须知道对方的地址才行。在TCP/IP协议中,IP地址是互联网上每台计算机的唯一标识。目前,最广泛采用的是IPv4版本的IP地址,如192.168.100.179。IP地址是采用点分十进制的一组数组成的。一般情况下,网络上一台设备只有一个IP地址,但路由器需要同时接入到两个及以上的网络,因此,路由器就会有两个或多个IP地址。通常计算机中负责IP数据包发送/接收的硬件设备是网卡,一个IP地址对应一张网卡,网卡就是计算机的网络接口。

一台计算机通过计算机网络将数据发送到另一台计算机,数据是逐层封装的。在IP层,IP协议负责将数据从一个IP地址发送到另一个IP地址。首先数据需要按照IP协议分割成多个小数据块,块长度一般为1024字节,这个小数据块称为IP数据报。发送出去的IP包,由于整个互联网的架构非常复杂,两台计算机之间经常有多条线路,因此,中间的路由器就负责转发一个IP包。IP包的特点是按块发送,途经多个路由,但由于路由器的承载能力有限,当大批IP包同时到达时,就会因路由器处理不过来而丢包。另外,IP包经过多个路由器的转发,在路由器中的排队时间也不同,因此,到达接收端的顺序也不会完全按照发送时的顺序。一个IP包除了包含要传输的数据外,还包含源IP地址和目标IP地址。

IP协议之上的是TCP协议,TCP称为传输控制协议。TCP协议在两台计算机之间建立的是可靠的连接,因此,TCP报文是按顺序处理的。形象地说,TCP协议是通过握手建立连接的,再确保按顺序收到下层的每个IP包,如果IP包丢失了,就向发送端请求重发。

应用层上许多常用的应用都是建立在TCP协议上的,例如,万维网浏览器上使用的HTTP协议,发送电子邮件的SMTP协议等。

TCP协议中设定了端口号,用来区分主机上的不同通信进程。例如,根据IP地址找到目的主机后,IP包需要上传到TCP层进行处理,TCP可以根据端口号来区分出当前通信的是网页浏览器还是QQ应用程序,这样就实现了进程间通信。

对于TCP协议,要了解它的三次握手和四次挥手。

三次握手过程如下:

①客户端发送连接请求报文。

②服务器端接收连接请求后,回复ACK报文。

③客户端接收到ACK报文后,也向服务器端发送ACK报文。

这样TCP连接就建立了。

TCP连接的拆除需要发送四个包,故称为四次挥手。

四次挥手过程如下:

①客户端发送一个FIN,用来关闭客户端到服务器端的数据传送。

②服务器端收到这个FIN,它发回一个ACK,确认序号为收到的序号加1。与SYN一样,一个FIN将占用一个序号。

③服务器端关闭与客户端的连接,发送一个FIN给客户端。

④客户端发回ACK报文确认,并将确认序号设置为收到序号加1。

运输层协议除了TCP外,还有UDP。UDP适用于对效率要求相对较高而对准确性要求相对较低的场合,例如,视频在线点播、网络语音通话等。

了解了TCP/IP协议的基本概念后,就可以开始进行网络编程了。

THE END  

声明:本站稿件版权均属中公教育优就业所有,未经许可不得擅自转载。

领取零基础自学IT资源

涉及方向有Java、Web前端、UI设计、软件测试、python等科目,内容包含学习路线、视频、源码等

点击申请领取资料

点击查看资料详情 

收起 


 相关推荐

问题解答专区
返回顶部