-
交换机:实现主机之间的数据交换
-
路由器:不但实现数据交换,而且实现数据的路径选择
-
网络的划分:局域网(1000m),城域网(20KM),广域网(大于20KM) 互联网/因特网
-
组织方式: 以太网/令牌环网
-
在复杂的网络通信中,必须保证每个主机都有自己唯一的标识符
-
网络中 主机的唯一标识---- IP地址
-
IP地址:
-
IPV4:uint32_t --无符号四个字节的整数(4G)--不到43亿--IP地址是不够用的; DHCP-->动态地址分配技术(谁上网谁分配); NAT-->网络地址转换技术
-
IPV6(128位):uint8_t addr[16] 但是不向前兼容IPV4,推广程度还很低
-
网络通信中的每条数据中都必须包含两条信息:源IP地址和目的IP地址---标识这个数据
-
端口:在一台主机上 唯一标识一个进程,当操作系统接收到一条网络数据能够知道应该交给哪个进程处理,在网络通信的每条数据中,都会包含有 源端端口/对端端口-->标识了数据从哪个进程发送,要交给哪个进程处理。
-
类型:uint16_t 无符号两个字节的整数0~65535--为什么不使用进程ID来标识进程?qq--pid:3256 重启改变 pid:45676
-
特性: 一个端口只能被一个进程占用,一个进程可以使用多个端口
-
网络通信中每条数据除了具备 源IP地址 和 目的IP地址 之外还必须具备:源端口和目的端口
-
端口是什么,是用来干什么的,特性是什么样的
-
网络通信:不同主机之间的进程通信
-
协议:约定
-
网络通信协议:网络通信中的数据格式约定-->遵循统一通信协议标准,才能实现实质通信,实现网络互联。
-
协议分层:根据通信场景不同,提供的服务不同以及使用的协议不同进行的层次划分
-
实际的网络通信环境中:
ISO-OSI--将整个网络通信环境划分为了七层:应用层;表示层;会话层;传输层;网络层;链路层;物理层
-
TCP/IP五层模型:应用层;传输层;网络层;链路层;物理层
-
TCP/IP:协议栈/协议簇,其中包含很多协议
-
熟悉TCP/IP协议栈中常见协议
-
应用层: 负责应用程序之间的数据沟通(数据格式约定); ->两个人说话都是用普通话,典型协议: HTTP/FTP/DNS/DHCP/SMTP... qq 应用程序是程序员编写的,因此应用层的协议也是程序员自己定义的
-
传输层: 负责进程之间的数据传输;典型协议: TCP/UDP qq发送的数据保证是发送给qq的,而不会发送给其他程序---端口--传输层的协议都会包含有端口信息
-
网络层: 负责地址管理与路由选择;典型协议: IP;典型设备: 路由器,实现数据的路由转发。 为每一条网络通信数据从起点到终点主机之间选择合适的路径进行传输--IP--网络层的协议都会包含有IP地址信息
-
链路层: 负责相邻设备之间的数据帧传输与识别;典型协议: Ethernet-以太网协议;典型设备: 交换机,实现数据的交换转发 例从某地到某地,要经过很多个节点---mac地址--物理网卡硬件地址
-
物理层: 负责物理光电信号的传输;典型协议: 以太网协议;典型设备: 集线器,将多根网线集合成为一根
- 网络通信中,存储单元大于一个字节的数据类型(int16_t, int32_t, int64_t, short, int, long, float, double)需要进行网络字节序的转换,以单字节(uint8_t, char)为存储单元的数据不需要转换。
如何判断一个主机的字节序?
联合体的成员共用同一份空间
union{
int a;
char b;
} tmp_t
tmp_t tmp;
tmp.a=1;
if(tmp.b==1){
//小端
}
