golang 网络编程:互联网协议(golang网络编程书籍)

golang 网络编程:互联网协议1. 互联网协议介绍
互联网的核心是一系列协议,总称为”互联网协议”(Internet Protocol Suite),正是这一些协议规定了电脑如何

1. 互联网协议介绍

互联网的核心是一组协议,统称为互联网协议簇,它们控制计算机如何连接以及连接到网络。了解这些协议将有助于您了解互联网的原理。这些协议庞大且复杂,因此我们无法在这里全部描述。我只能介绍几个日常开发中常用的协议。

1.1.1. 互联网分层模型

互联网的逻辑实现分为几个层次。每一层都有自己的功能,就像一座建筑物一样,每一层都由下面的楼层支撑。用户只触摸顶层,根本感觉不到底层。理解互联网需要对每一层实现的功能有自下而上的理解。

如上图所示,互联网根据模型的不同分为几层,但无论分为哪一种模型,层数越高,离用户越近,层数越低,离用户越近它是给用户的。更接近硬件。我们在软件开发中最常使用的模型是上面的将互联网分为五层的模型。

接下来从下到上逐层介绍。

物理层

计算机要与外部互联网通信,必须首先使用双绞线、光纤或无线电波连接到网络。这称为“真实物理层”,是计算机连接的物理手段。它主要规定了网络的一些电气特性,起到传输0和1的电信号的作用。

数据链路层

简单的0 和1 没有任何意义,因此用户赋予它们一些特定的含义并规定如何解释电信号。例如: 电信号的个数算是一组吗?每个信号位的含义是什么?这是位于“物理层”之上的“数据链路层”和0和1的函数。确定如何对它们进行分组以及什么?他们的意思。早期,每家公司都有自己的电信号分组方式。渐渐地,一种名为“以太网”的协议成为主流。

以太网指定电信号的集合构成称为“帧”的数据包。每个帧分为两部分:标头和数据。 “报头”包含数据包的几个描述性项目,例如发送者、接收者和数据类型。 “数据”是数据包的具体内容。 “标头”的长度固定为18字节。 “数据”的最小长度为46 字节,最大长度为1500 字节。因此,整个“帧”的最小长度为64字节,最大长度为1518字节。如果数据很长,应该分多帧发送。

那么如何识别发送者和接收者呢?以太网规定连接到网络的每个设备都必须有一个“网卡”接口。数据包必须从一个网卡发送到另一个网卡。网卡地址是数据包的发送和接收地址。这称为MAC 地址。每个网卡在出厂时都具有全球唯一的MAC 地址。该地址是一个48位的二进制数,通常表示为12位的十六进制数。前六位十六进制数字是制造商的编号,后六位是制造商的网卡序列号。 MAC地址可用于定位网卡和数据包的路径。

“端口”是0 到65535 之间的整数,正好有16 个二进制位。 0-1023端口已被系统占用,用户只能选择大于1023的端口。利用IP和端口,唯一确定互联网上的程序,实现网络间的程序通信。

需要新的协议,因为必须将端口信息添加到数据包中。最简单的实现称为UDP 协议,其格式只是在数据前面加上端口号。 UDP数据包也由两部分组成:“标头”和“数据”。 “头”部分主要定义发送和接收端口,“数据”部分是具体内容。 UDP数据包非常简单,“标头”部分总共只有8个字节,总长度不超过IP数据包的65,535个字节。

UDP协议的优点是比较简单,容易实现,但缺点是数据包一旦发出去,就没有办法知道对方是否收到了。为了解决这个问题,提高网络的可靠性,TCP协议诞生了。 TCP 协议确保不会丢失数据。缺点是流程复杂、实施困难、消耗资源较多。 TCP数据包没有长度限制,理论上可以无限长。然而,为了保证网络效率,TCP报文的长度通常不会超过IP报文的长度,从而无需拆分单个TCP报文。

网络层

应用程序从“传输层”接收数据并解压缩数据。由于互联网是一个开放的体系结构,数据源来自多种来源,因此接收方必须事先指定所传送数据的格式,才能获得所发送数据的实际内容。 “应用层”的作用是指定应用程序所使用的数据格式,例如常见的电子邮件、HTTP、FTP以及TCP协议之上的其他协议。这些协议构成了互联网协议的应用层。

如下图所示,发送方的HTTP数据在通过互联网发送时,会依次添加各层协议的头信息,接收方收到数据包后,根据协议进行解压缩即可。做。获取数据。

#golang网络编程以上:互联网协议相关内容来源网络仅供参考。相关信息请参见官方公告。

原创文章,作者:CSDN,如若转载,请注明出处:https://www.sudun.com/ask/93804.html

(0)
CSDN's avatarCSDN
上一篇 2024年7月26日 下午1:38
下一篇 2024年7月26日 下午1:38

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注