目录
网络基础
网络解决的问题,是牵扯到数据双方的。数据的发送方,数据的接收方。网络解决的就是不同机器之间不同进程的进程间通信问题。
局域网LAN: 计算机数量更多了, 通过交换机和路由器连接在一起
广域网WAN: 将远隔千里的计算机都连在一起;
1. 网络协议
网络协议解决的就是网络双方,发送的网络数据格式问题
网络协议本质上对发送和接收的数据的格式做出约定
1.1 OSI七层模型(理论模型)
物数网传会表应
物理层,数据链路层,网络层,传输层,会话层,表示层,应用层
1.2 TCP/IP五层/四层模型(实践模型)
应用层:程序员写的代码就是在应用层代码
典型协议:HTTP协议,DNS协议
传输层:负责端与端之间的传输
典型协议:TCP协议,UDP协议
网络层:负责地址管理和路由选择
典型协议:IP协议,典型设备:路由器
数据链路层:负责的是相邻设备之间的传输
典型协议:以太网协议,典型设备:交换机
物理层:负责将数据转换成为光电信号,将光电信号转化为二进制数据
典型协议:以太网协议,典型设备:集线器
一般情况下:
对于一台主机, 它的操作系统内核实现了从传输层到物理层的内容
对于一台路由器, 它实现了从网络层到物理层;
对于一台交换机, 它实现了从数据链路层到物理层;
对于集线器, 它只实现了物理层
2. 网络传输流程
2.1 数据包的封装和分用
- 不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报 (datagram),在链路层叫做帧(frame).
- 应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header),称为封装(Encapsulation).
- 首部信息中包含了一些类似于首部有多长, 载荷(payload)有多长, 上层协议是什么等信息.
- 数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部, 根据首部中的 “上层协议字段” 将数据交给对应的上层协议处理
3. 网络中的地址管理
3.1 ip地址
IP协议有两个版本, IPv4和IPv6
作用:在网络当中标识主机的地址
本质:IP地址是一个4字节,unit32_t 的整数(32位整数)(IPv4)
表现形式:“点分十进制” xx.xx.xx.xx ,xx:一个字节0~255
缓解ip地址枯竭问题:
DHCP协议:动态主机分配协议,谁上网给谁分配ip地址
NAT协议:地址转换协议
3.2 MAC地址
作用:数据链路层相连的设备进行互相识别
本质:长度为48位,也就是6个字节
表现形式:16进制数字加上冒号的形式来表示
网卡设备在出厂时由网卡厂商分配,为固定形式,一般是不可以修改的
4. 端口
作用:在一台机器上,一台端口可以唯一标识一台进程。所以,当网络数据到达网络协议栈之后,可以通过端口信息确认该条消息是否发送给哪一个进程
本质:unit16_t的整数(0~65535)
注意:一个端口只能被一个进程所绑定,但是一个进程可以绑定多个端口。IP + port 就可以在网络当中唯一定位一台主机当中的一个进程了
知名端口
0~1023:这个范围内的端口已经被一些知名的协议或者程序使用了
http:80
https:443
ssh:22
1531:oracle数据库侦听的端口
3306:mysql的侦听端口