1.网络的发展背景
1)最开始的计算机是为了计算导弹的弹道,当时计算机没有网络,数据只能从一台计算机拷贝到令一台,由于很麻烦,就出现了交换机,而交换机每次传输数据的方向都是固定的,于是出现了路由器。
路由器:有自我选择传输方向的功能。
2)网络规模:按照覆盖范围来分
局域网:一千米以下
城域网:10千米以下
广域网: 大于10公里
因特网:互联网(范围更加大一些)
以太网(走网方式)
令牌环网(走网方式,快被淘汰),大量的主机通信时 有一个令牌 ,为了防止冲突,谁有令牌谁传输消息;
3)通信
①ip地址:在网络中唯一标识一台主机(一个ID,一个整数),— uint32 — 无符号32位的整数,决定了IP地址的个数有限。
②在网络通信中的每一条数据中都应该包含有目的IP地址(我要到哪里去)+源IP地址(我从哪里来)
③IPV4 IP地址无符号32位整数决定了IP地址的个数,2的32次方,不到42亿,不够用,首先出来的是DHCP–动态地址分配(谁上网给谁分配IP地址),还是不够用,再来NAT–网络地址转换技术,将数据中的源IP地址转换为中间转发设备的IP地址-数据按照什么路径出去就应该按照什么路径回来(路由器,在自己的私网下从新分配ip地址)
具体发送过程:一个路由器下的私IP 通过路由器往外发送数据,而路由器先把发送数据的源IP地址改为了自己的,然后再把数据往外发生,同时把原本的源地址存了起来,这样数据回来的时候就知道是谁的了。 数据怎么出去,怎么回来。
④IPV6:uint8_t ip16—不向前兼容IPV4—导致IPV6推广使用很慢
⑤端口号:IP地址虽然可以让消息到达目的地点,但是不知道该给那个进程。此时就要用到端口号
在一条主机上标识一个进程–当计算机收到一个数据之后能通过数据中的目的端口信息来决定这个数据应该由哪一个进程来处理
每条网络中的数据都应该包含有:源端口+目的端口
端口号的范围:uint16_t 0~65535
特征:一个端口号只能被一个进程占用;一个进程可以使用多个端口号(一个端口号相当于一个通道)
⑥**协议:**通信双方数据格式的约定,如果不相同那么就可能出现错误
协议分层:例如打电话 人和人之间用普通话,而在手机传输中用的4G网,那么这两个就相当于分层(封装),在通信中对每一层提供的服务以及接口还有使用的协议进行封装,使通信环境层次更加清晰,更加容易实现标准化;更加容易使用;实现网络互联
osl将整个网络通信环境分为七层,七层参考模型:应用层-》表示层-》会话层-》传输层-》网络层-》链路层-》物理层
TCP/IP五层模型:应用层-》传输层-》网络层-》链路层-》物理层
①应用层:负责应用程序之间的数据沟通;常用协议 HTTP(浏览器,超文本传传输协议)/FTP(传输文件)/DNS/DHCP(动态地址分配)/SMTP
②传输层:负责端与端之间的数据传输;TCP/UDP
③网络层:负责地址管理与路由选择;目的IP,源IP;路由器
④链路层:负责相邻设备(两个相邻网卡之间的传输,再详细一点可以时主机和路由器)之间数据的传输;以太网协议:Ether;交换机(专门用于交换数据)
⑤物理层:负责光电信号的传输:以太网协议,集线器,信号放大
网络通信数据传输流程
例如QQ发送流程
1.QQ自身在前方加密自己协议(应用层)-> 操作系统封装发送协议QQ为tcp(传输层) -> IP协议(网络层) -> 封装一个以太头,和以太尾(链路层)之后发送光电信号 ->对方网卡就会接收之后通过(h_proto)解析出要交给上一次的那种协议解析->之后再IP协议上通过protocol->" tcp " 之后再交给给tcp解析->tcp再解析出那些数据要交给应用程序。