网络协议
在计算机诞生以来,从最原始的单机模式到现在多台计算机协同工作,形成计算机网络,从前很难想象的信息共享、多机合作、大规模计算在今天也早已成了现实。在早期,计算机网络需要解决的痛点,就是怎样才能无障碍地发送和接受数据。而发送和接受数据的过程中,需要相关的协议来支撑,下面介绍下平时接触最多的协议TCP/IP
协议。
TCP和IP
TCP
(Transmission Control Protocol)的中文名称为传输控制协议,IP
(Internet Protocol)的中文名称为互联网互联协议,除此之外,大家常见的还有HTTP
、HTTPS
、FTP
、SMTP
、UDP
等等。因为TCP/IP
是当前最为流行的网络传输协议框架,所以我们也将TCP/IP
称为协议族。
TCP
TCP
的分层框架图如下图所示,为了表示网络拓补图在连接层面上的机器对等理念,采用了A机器和B机器的说法。
下面对图中所涉及到层进行简单的说明
-
链路层:单个0、1是没有意义的,链路层是以字节为单位把0与1进行分组,定义数据帧,写入源和目标机器的物理地址、数据、校验位来传输数据。链表层报文结构如下:
MAC地址长6个字节共48位,通常使用十六进制数表示,我们可以在命令行窗口中输入ifconfig -a
指令即可看到MAC地址。 -
网络层:根据
IP
定义网络地址,区分网段。子网内根据地址解析协议(ARP)进行MAC寻址,子网外进行路由转发数据包。这个数据包也就是IP数据包
。 -
传输层:数据包通过网络层发送到目标计算机后,应用程序在传输层定义逻辑端口,确认身份后,将数据包交给应用程序,实现端口到端口间通信。最典型的传输层协议是
UDP
和TCP
。UDP
只是在IP
数据包上增加端口等部分信息,是面向无连接的,是属于不可靠的传输协议,常用于视频通信、电话会议等等,因为这些应用场景就算少/丢一两帧数据影响也不会很大。与之相反,TCP
是面向连接
的,所谓的面向连接,就是一种端到端之间通过不断地失败重试机制建立的可靠数据传输方式
,如同一条固定的信息通道承载着数据的可靠传输。 -
应用层:传输层的数据到达应用程序时,以某种统一规定的协议格式解读数据。比如,E-mail在每个公司的程序界面、操作、管理方式都不一样,但是都能读取到邮件的信息,这是因为邮件遵守了SMTP协议,该协议如同传统的书信格式,按规定填写邮政编码以及收件人信息。
小结
程序在发送消息时,应用层按既定的协议打包数据,随后由传输层加上双方的端口号,由网络层加上双方的