基础知识
1.网络开发两大架构
早期数据交互的格式是没有网络的 两个文件之间的数据交互需要通过第三个文件 a,b文件同时和c文件交互, a文件把数据先存放c文件中 b文件从c文件取,反之亦然 socket (套接字) 是一个收发数据的工具 有了网络之后 a文件中的数据,通过网络协议,转化101010...二进制进行发送 a文件借助socket发送数据 b文件借助socket接受数据 # 二大架构 c/s 架构 : c => client (客户端) 王者荣耀 微信 qq wow dnf ... s => server (服务端) 天河三号 (百亿亿次) B/S 架构 : b => Brower (浏览器) 谷歌,火狐,360,ie 通过输入网址,访问对方的服务器,对方服务器响应之后,把数据返回,浏览器通过返回的数据,渲染页面,看到最后的结果 s => server (服务端) 一旦开启,永不关机(除非宕机) 在未来,更倾向于使用B/s架构,成为新的趋势 小程序: 微信小程序, 支付宝小程序 (1) 省去复杂下载安装环节,节省手机电脑的空间 (2) 因为手机带来的便捷性,随时随地使用到想要的应用,提升用户的满意度
2.网络的概念
""" 网段的作用: 主要用来划分同一区域里的某些机器是否能够互相通信。 在一个网段里可以不同过因特网,直接对话 判别的依据: 如果IP地址和子网掩码相与得到的值相同就是同一网段 """ """ 逻辑与 全真则真,一假则假 逻辑或 一真则真,全假则假 """ ip1: 192.168,11.251 子网掩码:255.255.255.0 11000000 10101000 00001011 11111011 11111111 11111111 11111111 00000000 11000000 10101000 00001011 00000000 => 192.168.11.0 (网段) ip2: 192.168,12.35 子网掩码:255.255.255.0 11000000 10101000 00001100 00100011 11111111 11111111 11111111 00000000 11000000 10101000 00001100 00000000 => 192.168.12.0 (网段) ip1: 192.168,11.251 子网掩码:255.255.0.0 11000000 10101000 00001011 11111011 11111111 11111111 00000000 00000000 11000000 10101000 00000000 00000000 => 192.168.0.0 (网段) ip2: 192.168,12.35 子网掩码:255.255.0.0 11000000 10101000 00001011 11111011 11111111 11111111 00000000 00000000 11000000 10101000 00000000 00000000 => 192.168.0.0 (网段) 下面的网络相同,意味着可以互相通信;
3.端口
"""端口:具体某个程序与外界通讯的出口 取值范围:0~65535 """ 192.168.2.1:8000 访问这个世界上任何一个电脑里的任何一个软件 自定义端口时,最好命名8000以上的端口号 https://blog.csdn.net/l_smalltiger/article/details/81951824 20 : FTP文件传输协议(默认数据口) 21 : FTP文件传输协议(控制) 22 : SSH远程登录协议 25 : SMTP服务器所开放的端口,用于发送邮件 80 : http用于网页浏览,木马Executor开放此端口 443: 基于TLS/SSL的网页浏览端口,能提供加密和通过安全端口传输的另一种HTTP => HTTPS 3306:MySQL开放此端口
4.osi 网络七层模型
应用层 (应用层,表示层,会话层) 封装数据: 根据不同的协议,封装不同格式的数据 http (超文本传输协议) HTTPS (加密传输的超文本传输协议) FTP (文件传输协议) SMTP (调子邮件传输协议) 传输层: 封装端口: 指定传输协议(TCP协议/UDP协议) 网络层: 封装ip: ipv4版本 / ipv6 数据链路层: 封装mac地址: 指定mac地址(arp协议[ip->mac] / rarp协议[mac->ip]) 物理层: 打成数据包,变成二进制的字节流,通过网络进行传输
5.交换机与路由器 , 发送数据包流程
交换机: 从下到上拆2层,拆到数据链路层 路由器: 从下到上拆3层,拆到网络层(得到对应的网段) arp协议: 通过ip -> mac rarp协议: 通过mac -> ip """arp协议整体是通过: 一次广播 + 一次单播 实现""" # arp协议的完整过程: 电脑a发现目标主机没有mac,先发送arp广播包,把mac标记成全F的广播地址 交换机接受到arp的广播包,进行从下到上拆包,拆2层,拆到数据链路层看到全F广播地址,开始广播 把这个广播包发送给每一台主机 每台主机得到广播包后,都开始拆包,如果该数据包找寻的主机不是自己,自动舍弃 路由器得到arp广播包后,从下到上拆包,拆3层,拆到网络层,得到网段信息 通过路由器的对照信息表,找到网段对应的网关(接口) 对应网关的这台交换机得到arp广播包后,从下到上拆包,拆2层,发现全F广播地址进行广播 数据库主机收到广播包后,依次从下到上拆包,发现自己是目标要找的那台主机, 把自己的ip->mac对照信息封装,变成arp响应包,发送给对应的交换机 交换机得到arp响应包之后,依次进行单播,返回给最终的原主机 在回来的过程中,所有得到过相应arp广播包的主机都会自动更新自己的arp解析表,方便下次使用
6.TCP/UDP协议
# tcp TCP(Transmission Control Protocol)一种面向连接的、可靠的、传输层通信协议(比如:打电话) 优点:可靠,稳定,传输完整稳定,不限制数据大小 缺点:慢,效率低,占用系统资源高,一发一收都需要对方确认 应用:Web浏览器,电子邮件,文件传输,大量数据传输的场景 # udp UDP(User Datagram Protocol)一种无连接的,不可靠的传输层通信协议(比如:发短信) 优点:速度快,可以多人同时聊天,耗费资源少,不需要建立连接 缺点:不稳定,不能保证每次数据都能接收到 应用:IP电话,实时视频会议,聊天软件,少量数据传输的场景 # TCP 三次握手 客户端发送一个请求消息,与服务端建立连接 服务端接受这个请求,发出响应消息,回应客户端,也要与客户端a建立连接(看下a是否同意) 客户端接受服务端的响应消息之后,发送回复消息(表达同意,到此客户端与服务端建立连接成功) # TCP 发送数据 每次发送一次数据,都会对应一个回执消息,如果发送方没有接受到回执消息,那么该数据包在发送一次; # TCP 四次挥手 客户端向服务端发送一个断开连接请求(代表客户端没有数据给服务端) 服务端接受请求,发出响应 等到服务端所有数据发送完毕之后 服务端向客户端发送断开连接请求 客户端接受请求,发出响应 等到2msl,msl(最大报文段生存时间)这么长时间之后 客户端与服务端彻底断开连接