即套接字,是应用层 与 TCP/IP 协议族通信的中间软件抽象层,表现为一个封装了 TCP / IP协议族 的编程接口(API)
Socket不是一种协议,而是一个编程调用接口(API),属于传输层(主要解决数据如何在网络中传输)
对用户来说,只需调用Socket去组织数据,以符合指定的协议,即可通信
UDP「UDP协议特点」
- UDP是无连接的传输层协议;
- UDP使用尽最大努力交付,不保证可靠交付;
- UDP是面向报文的,对应用层交下来的报文,不合并,不拆分,保留原报文的边界;
- UDP没有拥塞控制,因此即使网络出现拥塞也不会降低发送速率;
- UDP支持一对一 一对多 多对多的交互通信;
- UDP的首部开销小,只有8字节
「TCP和UDP的区别」
- TCP是可靠传输,UDP是不可靠传输;
- TCP面向连接,UDP无连接;
- TCP传输数据有序,UDP不保证数据的有序性;
- TCP不保存数据边界,UDP保留数据边界;
- TCP传输速度相对UDP较慢;
- TCP有流量控制和拥塞控制,UDP没有;
- TCP是重量级协议,UDP是轻量级协议;
- TCP首部较长20字节,UDP首部较短8字节;
「基于TCP和UDP的常用协议」
HTTP、HTTPS、FTP、TELNET、SMTP(简单邮件传输协议)协议基于可靠的TCP协议。
TFTP、DNS、DHCP、TFTP、SNMP(简单网络管理协议)、RIP基于不可靠的UDP协议
报文段UDP的报文段共有2个字段:数据字段 首部字段
「UDP报文中每个字段的含义如下:」
- 源端口:这个字段占据 UDP 报文头的前 16 位,通常包含发送数据报的应用程序所使用的 UDP 端口,接收端的应用程序利用这个字段的值作为发送响应的目的地址,这个字段是可选的,所以发送端的应用程序不一定会把自己的端口号写入该字段中,如果不写入端口号,则把这个字段设置为 0,这样,接收端的应用程序就不能发送响应了。
- 目的端口:接收端计算机上 UDP 软件使用的端口,占据 16 位。
- 长度:该字段占据 16 位,表示 UDP 数据报长度,包含 UDP 报文头和 UDP 数据长度,因为 UDP 报文头长度是 8 个字节,所以这个值最小为 8。
- 校验值:该字段占据 16 位,可以检验数据在传输过程中是否被损坏。
MAC称为物理地址,也叫硬件地址,用来定义网络设备的位置,MAC地址是网卡出厂时设定的,是固定的(但可以通过在设备管理器中或注册表等方式修改,同一网段内的MAC地址必须唯一)。
MAC地址采用十六进制数表示,长度是6个字节(48位),分为前24位和后24位。
IP地址❝
MAC地址对应于OSI参考模型的第二层数据链路层,工作在数据链路层的交换机维护着计算机MAC地址和自身端口的数据库,交换机根据收到的数据帧中的目的MAC地址字段来转发数据帧。
❞
常见的IP地址分为IPv4与IPv6两大类,当前广泛应用的是IPv4,目前IPv4几乎耗尽,下一阶段必然会进行版本升级到IPv6;
IP地址是以网络号和主机号来标示网络上的主机的,我们把网络号相同的主机称之为本地网络,网络号不相同的主机称之为远程网络主机
本地网络中的主机可以直接相互通信;远程网络中的主机要相互通信必须通过本地网关(Gateway)来传递转发数据。
IP地址对应于OSI参考模型的第三层网络层,工作在网络层的路由器根据目标IP和源IP来判断是否属于同一网段,如果是不同网段,则转发数据包。
「IP地址格式和表示」
IP地址(IPv4)由32位二进制数组成,分为4段(4个字节),每一段为8位二进制数(1个字节)
每一段8位二进制,中间使用英文的标点符号.隔开
由于二进制数太长,为了便于记忆和识别,把每一段8位二进制数转成十进制,大小为0至255。
IP地址的这种表示法叫做「点分十进制表示法」。
IP地址表示为:xxx.xxx.xxx.xxx
举个栗子:210.21.196.6就是一个IP地址的表示。
计算机的IP地址由两部分组成,一部分为网络标识,一部分为主机标识,同一网段内的计算机网络部分相同,主机部分不能同时重复出现。
「路由器」连接不同网段,负责不同网段之间的数据转发,「交换机」连接的是同一网段的计算机。
通过设置网络地址和主机地址,在互相连接的整个网络中保证每台主机的IP地址不会互相重叠,即IP地址具有了唯一性。
「IP地址分类详解」
IP地址分A、B、C、D、E五类,其中A、B、C这三类是比较常用的IP地址,D、E类为特殊地址。
子网掩码「子网掩码的概念及作用」
通过子网掩码,才能表明一台主机所在的子网与其他子网的关系,使网络正常工作。
子网掩码和IP地址做与运算,分离出IP地址中的网络地址和主机地址,用于判断该IP地址是在本地网络上,还是在远程网络网上。
子网掩码还用于将网络进一步划分为若干子网,以避免主机过多而拥堵或过少而IP浪费。
「子网掩码的组成」
同IP地址一样,子网掩码是由长度为32位二进制数组成的一个地址。
子网掩码32位与IP地址32位相对应,IP地址如果某位是网络地址,则子网掩码为1,否则为0。
举个栗子:如:11111111.11111111.11111111.00000000
❝
左边连续的1的个数代表网络号的长度,(使用时必须是连续的,理论上也可以不连续),右边连续的0的个数代表主机号的长度。
❞
「为什么要使用子网掩码」
两台主机要通信,首先要判断是否处于同一网段,即网络地址是否相同。
如果相同,那么可以把数据包直接发送到目标主机,否则就需要路由网关将数据包转发送到目的地。
❝
可以这么简单的理解:A主机要与B主机通信,A和B各自的IP地址与A主机的子网掩码进行And与运算,看得出的结果:
1、结果如果相同,则说明这两台主机是处于同一个网段,这样A可以通过ARP广播发现B的MAC地址,B也可以发现A的MAC地址来实现正常通信。
2、如果结果不同,ARP广播会在本地网关终结,这时候A会把发给B的数据包先发给本地网关,网关再根据B主机的IP地址来查询路由表,再将数据包继续传递转发,最终送达到目的地B。
❞
❝
计算机的网关(Gateway)就是到其他网段的出口,也就是路由器接口IP地址。
路由器接口使用的IP地址可以是本网段中任何一个地址,不过通常使用该网段的第一个可用的地址或最后一个可用的地址,这是为了尽可能避免和本网段中的主机地址冲突。
❞
在如下拓扑图示例中,A与B,C与D,都可以直接相互通信(都是属于各自同一网段,不用经过路由器)
但是A与C,A与D,B与C,B与D它们之间不属于同一网段,所以它们通信是要经过本地网关,然后路由器根据对方IP地址,在路由表中查找恰好有匹配到对方IP地址的直连路由,于是从另一边网关接口转发出去实现互连