网络的发展背景:
单机时代–>联网–>移动互联网
猫:调制解调器
路由器:能将很多电脑连到网络里。
交换机:将若干台主机连到局域网内
实际上路由器和交换机没区别,面试时是有区别的
- 局域网:LAN:计算机数量更多,通过交换机和路由器连接在一起。
- 广域网:WAN:将远隔千里的计算机都连在一起。
- 网络互连:多台计算机连接在一起,完成数据共享。
网络协议:
协议是一种约定。
协议分层的好处:
- 把大的问题拆分成小的问题。
- 很灵活的对某层协议进行变更和替换,同时又不会对其他层造成影响。
多态:在封装的基础上更近一步,封装是给你一个类,不需要知道类里面的private属性值,只要知道类提供的一些public方法就可以了,多态的用户连这个类到底是哪种类型都不知道,只要知道他是某一个父类就可以了,不需要知道实际子类的类型,就是想让程序员了解的东西更少。 - 最大好处在于封装,面向对象。
- OSI七层模型:太麻烦,实际不使用
- TCP/IP五层(或四层)模型:应用层、传输层、网络层、链路层、物理层
- TCP是一组协议。
- 应用层:负责应用程序间沟通,比如qq----应用程序(HTTP/FTP/DNS/DHCP/URI/HTML/SMTP/POP/IMAP/SIP)
- 传输层:点对点(端与端、进程与进程)的数据传输 (TCP/UDP/SCTP/DCCP)-----操作系统。
- 互联网层:地址管理与路由选择(路由器)(ARP/IP/ICMP)-----操作系统。
- 网卡层(链路层):(相邻设备之间的数据传输)设备驱动程序与网络接口。(Ethernet以太网)(交换机–相邻设备之间的数据的固定转发)
- 硬件:光电信号的传输,(以太网协议)(集线器)算上硬件是5层,不算硬件是4层
对于⼀台主机, 它的操作系统内核实现了从传输层到物理层的内容;
对于⼀台路由器, 它实现了从网络层到物理层;
对于⼀台交换机, 它实现了从数据链路层到物理层;
对于集线器, 它只实现了物理层;
但是并不绝对. 很多交换机也实现了网络层的转发; 很多路由器也实现了部分传输层的内容(⽐如端⼝转发);
- 网络传输基本流程: 封装,分用:
- IP地址:在网络中唯一标示一台主机
- 表示方式:无符号32位整数,点分十进制–用四个字节表示(一个字节范围0~ 255,两个字节0~ 65535,四个字节0~42亿9千万)
- IP地址是在IP协议中用来标识网络中不同主机的地址。
- 对IPv4来说,IP地址是一个4字节,32位的整数。
- IPv6:unit8_t ip[16]—因为不向前兼容IPv4,因此没有很好的推广起来。
- 在网络中每条数据中都会包含两条信息,源端ip地址,目的端ip地址
- port端口:
- 功能:在一台主机上标识一个进程
- unit 16_t------无符号16位整数
- 范围:0~65535(在只有一个ip地址时,主机上客户端最多只能起65535个)
- 特性:
- 一个端口只能被一个进程占用
- 一个进程可以使用多个端口
- 在网络中每条数据都会包含两条信息:源端端口,目的端端口
- MAC地址:
- 用来识别数据链路层中相连的节点。
- 长度为48位,6字节,一般用16进制数字加上冒号表示(08:00:27:03:fb:19)
- 在网卡出厂时就确定了,不能更改。
应用层
HTTP协议
HTTP协议:超文本传输协议,是浏览器与服务端之间通信所用的协议,传输数据的主要格式是html
URL(网址):统一资源定位符
传输层
UDP协议
是一种面向无连接的传输层协议,不会关注对端是否真的收到了传过去的数据,如果要检查对端是否收到数据包或者对端是否连接到网络,需要在应用程序中实现。
UDP常用于分组数据较少,或者多播,广播通行及视屏通信等多媒体领域。
TCP协议
TCP是一张面向有连接的传输层协议,可以保证两端通信主机之间的通信可达。TCP可以正确处理在传输过程中丢包,传输顺序乱掉等异常情况。还可以利用带宽,缓解网络拥堵。
然而,有时候为了建立与断开连接,他要至少7次发包接包,浪费网络流量。为了提高网络的利用率,TCP协议中定义了各种各样复杂的规范,因此不利于视屏会议(音频视频的数据量既定)等场合使用
互联网层(网络层)
互联网层使用IP协议,IP协议基于IP地址转发分包数据。
IP协议
IP协议的作用是:跨越网络传输数据包,让整个互联网都能收到数据;
连接IP网络的设备必须有自己唯一的识别号,以便识别具体的设备。分组数据在IP地址的基础上被发送给对端。IP协议属于非可靠性传输协议,不具有重发机制,即使分组数据包未能到达对端主机也不会重发。
ICMP协议
当IP数据包在发送是时没有被对端接收到,需要给发送端发送一个通知告知发生了异常。有时也用来检测网络的状况。
ARP协议
作用:从分组数据包中解析出物理地址(MAC地址)
链路层
利用以太网中的数据链路层进行通信。