1.令牌环网
和线程锁的目的一样,只有传输设备与接收设备的令牌环相同时,才能接收信息
和以太网一样,令牌环网也在数据传输层,但是底层协议不同(层状网络,替换底层协议不会影响传输)
2.IP地址
IP地址可以保证主机的全网唯一性,比如我们的云服务器IP就是全网唯一的
IP与mac:IP地址是数据传输的终极目标,而mac是数据传输的小目标,若干个mac组成了IP,IP地址在传输地址中是不变的,mac地址出局域网后源和目的都要被丢弃,每经过一个设备都要变化,经由路由器封装
IP地址是四字节,32比特位,例如122.51.179.128
IP地址交给路由器的原因:路由器会解包和封装数据链层协议,提取信息,实现不同区域的通信,实现了底层协议差异化的解决
同一子网,如果没有路由器,那么底层协议必须相同
IP及上层是一样的,IP层使用路由器使得IP协议屏蔽了底层网络的差异,实现了全球主机的IP协议相同,体现了网络层状结构的优越性
3.IP地址与mac地址
路由器可以获取IP地址在哪个局域网内(IP地址可以让它获取到下一个需要跳转的路由器)
使用命令ifconfig查看当前云服务器的IP地址与mac地址
即IP:
‘
mac:
IPV4地址解释:它是一个32个字节的无符号整数,范围是0到2的32次方-1,即从0到约42亿
4字节与32位:在计算机中,1个字节等于8个比特位
点分十进制表示法:用.将4个字节分开,每个数字的范围是0到2的8次方-1,即从0到255
当IPV4不够时,会推出如现在IPV6的改进产品,这个产品已经逐渐开始使用
mac地址长度48位,即6个字节,一般用16进制和:组成,在出厂时存储在网卡中,不可修改,相较于IP可以在广域网和局域网中使用(后者一般不用),mac只能在局域网中使用
网络通信的本质:进程
4.Socket编程
端口号:传输层协议的一部分
特点:
1.是一个2字节也就是16个比特位的整数
2.用于标识一个进程,告诉操作系统数据要给哪一个进程
3.IP地址加端口号可以标识唯一主机的唯一进程
4.一个端口号只增被一个进程使用,一个进程可以有多个端口号
端口号port:无论对于cilent还是server,都能唯一标识该主机上一个网络应用层的进程上
在公网上,IP地址地址标识唯一主机,端口号标识唯一进程,IP:port等于全网唯一一个
IP+port的模式,就是socket,实现了客户端和服务器的唯二进程进行通信
端口号与pid:
1.不是所有进程都需要进行网络通信,但是所有进程都要有一个pid
2.不使用pid做端口,目的是将系统与网络分解耦合,给网络设计了单独的规则,防止系统修改进程pid导致进程混乱
5.传输层协议
数据段:是在传输层处理的数据单元,通常用于描述TCP或UCP等传输协议封装的信息
数据报:是在网络层的数据处理单元,通常用于描述IP地址描述的信息
数据帧:是在链路层处理的数据单元,通常用于描述以太网驱动程序封装的信息
总结来说,数据段是传输层的概念,数据报是网络层的概念,而数据帧则是链路层的概念。这些不同层次的数据单元在计算机网络中起着不同的作用,它们通过层层封装和解封装来实现数据的有效传输
6.TCP与UCP
TCP:传输控制协议,面向连接的,可靠的,基于字节流的传输层通信协议,可以解决数据传输中丢包乱序的方法,但是维护复杂,在银行等严谨场景下使用
UCP:用户数据报协议,无需建立连接的,不可靠的,面向数据报传输层通信协议,由于无需连接,所以传输数据出现丢包乱序该协议无法处理甚至无法知晓,但是维护简单,在直播等休闲场景下使用
7.网络字节序列
小端:低权位放在低地址中
大端:低权位放在高地址中
网络传输同时存在大小端所以需要协议来规定
TCP规定网络数据流采用大端字节(大小端的主机都必须遵循),大端直接收发,小端先在缓冲区中转换再发送(先发出去的数据是低地址,后发出去的数据是高地址)
8.网络字节序与主机字节序的转换
系统函数
h:主机
n:网络
l:32位长整数
s:16位短整数
如htonl标识将32位长整数从主机字节序转换为网络字节序,例如将ip地址转换后发送
如果主机是小端字节序,这些函数将参数做相应的大小端转换然后返回;如果主机是大端字节序,这些函数不做转换,将参数原封不动地返回
#include <arpa/inet.h>
// 主机字节序转换为网络字节序
uint32_t htonl(uint32_t hostlong);//32位
uint16_t htons(uint16_t hostshort);//16位
// 网络字节序转换为主机字节序
uint32_t ntohl(uint32_t netlong);//32位
uint16_t ntohs(uint16_t netshort);//16位