网络编程-五层协议
操作系统 : 操作连接计算机硬件和计算机软件的纽带
C/S B/S系统
C : client 客户端
B : browser 浏览器
S : server 服务端
C/S : 基于客户端和服务端的架构
硬件C/S架构 : 打印机
软件C/S架构 : qq,微信….
B/S : 特殊的C/S架构 浏览器和服务端的通讯
网络通信 : 从一台计算机的一个软件将一个数据(文件,视频)发送给另一台计算机的这个软件上 是软件与软件的通讯
网络通信原理:
1.一系列物理连接介质
2.地址(ip,端口号),确定对方软件的位置
3.一系列互联网协议
五层协议
应用层
传输层
网络层
数据链路层
物理层
物理层
物理连接介质(光纤,双绞线) 发送电信号 高低电频
数据链路层
物理层只是单纯的发送一些二进制的010101010,数据链路层主要是对数据进行分组
统一标准:以太网协议
规定数据分为两部分: 1,数据头 18个字节
源地址6个字节
目标地址6个字节
数据类型6个字节
2,数据
一组电信号叫做数据报,也叫一帧
数据头+数据部分,最短64个字节,最长1518个字节,超过最大限制就分片发送
网卡:mac地址 计算机的唯一标识,相当于身份证,计算机出厂时就有
12位 16进制 例 :40-8D-5C-93-F1-DE 前六位:厂商编号, 后六位:流水线号
计算机通信方式:广播
理论上,有了mac地址,加上广播的方式,全世界所有的计算机都可以通信了,实际上不行,会出现广播风暴,效率低,工作量太大
规定 : mac + 广播的形式只能在局域网中实行
原则上,同一个局域网就是通过 源mac地址 + 目标mac地址 + 数据类型 +广播 可以将数据进行传输
交换机有一个mac与网口的对照表(mac地址自主学习):
计算机在第一次连接交换机的时候,是不知道计算机的mac的
计算机第一次发送数据给目标mac,不知道目标mac是多少,通过IP地址 + ARP协议计算出对方的mac地址:
第一次发送的IP地址为 192.168.10.24
通过广播,在同一个局域网内广播一个数据:
单播 : 单独发送给交换机
广播 : 交换机群发给所连接的所有计算机,找到符合的mac地址,回传数据
(源mac地址 40-8D-5C-93-F1-DE ,对方mac FF-FF-FF-FF-FF-FF)(源ip :192.168.10.22 对方ip 192.168.10.24)
路由器 : 家用路由器 企业级路由器
内网:DHCP协议 自动分配IP地址,子网掩码,网关ip地址
同一个局域网内的所有计算机的ip地址一定不同,不同局域网内的计算机ip可以相同
内网计算机的ip都是由路由器虚拟出来的
外网:连接外网,收发数据
DNS:转换服务器与域名
同一个局域网之内:
第一次方式数据,需要广播的形式,获取对方的mac地址,将mac地址与网口写入交换机的对照表
第二次发送数据(计算机个网口没更换):不通过关闭,而是直接从mac对照表寻找对方的地址,直接进行发送
网络层
确定局域网的位置
ip协议 : 寻找对方局域网的位置
ip + mac +广播 就能确定世界上任何一个计算机的位置
ipv4
四点分十进制 : 0~255.0~255.0~255.0
同一个局域网内,所有计算机的IP地址绝对不同
子网掩码:
C类 : 255.255.255.0 一般都为C类
B类 : 255.255.0.0
A类 : 255.0.0.0
IP + 子网掩码可以确定网关的地址
172.16.10.1: 10101100.00010000.00001010.00000001
255.255.255.0: 11111111.11111111.11111111.00000000
一一对照,都为1时取1,否则取0,所以前三个与ip地址相同:
10101100.00010000.00001010.00000000
此IP网段: 172.16.10.0
如果子网掩码都是C类,一个局域网可以分配多少个ip?
一个网段:最多能有256个IP: 0 不能用, 255 不能用,254 也是特殊的功能,所以总共有253个IP可以分配
端口 + IP + 子网掩码 + mac + 广播的形式就可以确定世界上任何一个计算机软件的位置.
精简一下: ip协议和ARP 协议可以获取我的mac地址,端口和ip地址 就可以确定世界上任何一个计算机软件的位置.
总结:
通过计算机发送数据,我要先获取对方的ip和子网掩码
去判断是不是同一个局域网:
如果是同一个局域网: 通过IP + ARP协议 获取mac发送数据.
如果不是同一个局域网:网关(路由协议)一层一层的发送.
传输层:
端口协议 每一个软件都有固定的端口
0–65535 1~1024系统占用 1024~8000有固定的软件占用 设置端口基本都在8000以后
端口 + ip + mac + 广播 就能确定世界上任何一个计算机的软件的位置
应用层
每个软件对于数据有不同的自制协议 ftp,www….
基本流程:
从自己计算机的qq软件上发送信息给好友:\’今晚吃鸡\’
1.应用层:qq自动将信息封装{\’content\’:今晚吃鸡} 软件自己操作
操作系统:
2.传输层: 确定软件在计算机中的位置 8000 | {\’content\’: \’今晚吃鸡\’}
3.网络层:确定计算机在哪个局域网 ip:192.168.1.12 | 8000 | {\’content\’: \’今晚吃鸡\’}
4.数据链路层:确定计算机在局域网中的地址 源mac地址,目标mac地址 数据类型 | ip:192.168.1.12 | 8000 | {\’content\’: \’今晚吃鸡\’}
5.物理层:网线将数据以电信号的形式传输出去
访问京东的具体流程:
1.在浏览器输入网址www.jd.com 访问DNS浏览器,获取其ip地址
2.本机的操作系统:判断你访问的ip地址和你的ip地址是否在同一网段
分支1:
3.如果在同一网段,以单播的形式将请求发送给交换机,
然后交换机再以广播的形式发送给其他的交换机,所有的交换机再以广播的形式发送给其他计算机
分支2:
3.不在同一网段,你的请求会以单播的形式发送给交换机,再发给路由
4.路由利用NAT技术将计算机ip置换成网段
静态路由:将数据从路由传给京东的路由
路由协议:利用算法计算出达到目标路由的最短路径
5.数据发送到京东的路由中,通过端口映射发送至京东服务器的对应软件端口上