网络基础
URI Uniform Resource Identifer
统一资源标识符 用来唯一的标识一个资源
URL Uniform Resource Locator
统一资源定位符 URL可以以哦那个来标识一个资源 而且还指明了如何定位这个资源 用地址定义一个资源
URN Uniform Resource Name
统一资源命名 即通过名字来表示资源的 用名称定位一个资源
URL肯定是一个URL URL并不一定是URL 也有可能是URN
URL与URN是URI的子集
URL
1.资源标识
2.具有定位资源的功能(资源的具体位置)
3.指明了获取资源所采用的协议
协议名称 + 主机名称 + 端口号 + 路径 + 文件 + 查询所需的字符串
https 默认端口号 443 http 默认端口号 80 MySQL 默认端口号 3306
举例
想找一个人 那这个人的名称就是一个URI
通过家庭住址找就是URL 通过姓名+身份证号就是URN
DNS
Domain Name Server 域名服务器
作用:域名与对应的IP转换的服务器
特征:DNS中保存了一张域名与对应的IP地址的表 一个域名对应一个IP地址 一个IP地址可以对应多个域名
gTLD: generic Top-Level DNS Server 顶级域名服务器
为所有.com .net …后缀域名解析的服务器
DNS解析的过程
当输入一个域名 先从DNS本地服务器寻找 这个域名对应的IP地址 如果缓存里没有找到
去向根服务器去寻找 如果根服务器中没有找到 就去.com域服务器寻找 如果还没找到
就去 域名的域服务器寻找 最后会在这里找到对应的IP地址 然后缓存到DNS本地服务器
下次寻找就不会这么麻烦了
IP
Internet Protocol Address
互联网协议地址 IP地址
作用 分配给用户上网使用的互联网协议
分类 IPv4(长度32位(4个字节) 十进制表示) IPv6(8组(128位) 16进制)
IPv6 地址空间更大 路由表更小 组表支持以及对流支持增强 对自动配置的支持 更高的安全性
TCP (打电话)
Transmission Control Protocol 传输控制协议
特点 面向连接(首发数据前 必须建立可靠的连接)
建立连接的基础:三次握手
应用场景:数据必须准确无误的收发 HTTP请求 FTP文件传输 邮件收发
优点 稳定 重传机制 拥塞控制机制 断开机制
缺点 速度慢 效率低 占用资源 容易被攻击(三次握手的过程中 DOS DDOS 攻击)
TCP/IP协议组 提供点对点的连接机制 制定了数据封装 定址 传输 路由 数据接收的标准
UDP(喇叭叫人)
User Data Protocal 用户数据报协议
特点 面向无连接(不可靠的协议 无传输状态机制) 无连接信息发送机制
应用场景 无需确保通讯质量且要求速度快 无需确保信息完整
消息收发 语音通话 直播(QQ)
优点 安全 快速 漏洞少(UDP flood攻击)
缺点 不可靠 不稳定 容易丢包
总结 只要目的的源地址 端口号 地地址 端口号确定 则可以直接发送信息报文 但不能保证一定能收到或收到完整的数据
HTTP与HTTPS
HTTP:HyperText Tranfer Protocol 超文本传输协议
定义 客户端和服务器端请求和应答的标准 用于从WEB服务器传输超文本到本地浏览器的传输协议
HTTP请求 按照协议规则先向WEB服务器发送的将超文本传输到本地浏览器的请求
HTTPS:HyperText Transfer Protocol Secure 超文本传输安全协议
定义 HTTP的安全版 (安全基础是SSL/TLS)
SSL Secure Sockets Layer 安全套接层
TLS Transport Layer Security 传输层安全
位网络通讯提供安全及数据完整性的一种安全协议 对网络连接进行加密
区别
1.HTTP是不安全的(监听和中间人攻击的手段 获取网站账户信息和敏感信息)
HTTPS可防止被攻击
2.HTTP协议的传输内容是明文 直接在TCP连接上运行 客户端和服务器都无法验证对方身份
3.HTTPS协议的传输内容都被SSL/TLS加密 且运行在SSL/TLS上 SSL/TLS运行在TCP连接上 所以数据传输是安全的
TCP三次握手
标志位: 数据包
SYN:Synchronize Sequence Numbers 同步序列编号
ACK:Acknowledgement 确认字符
状态
LISTEN: 侦听TCP端口的连接请求(我等着你发送连接请求呢)
SYN_SENT:在发送连接请求后等待匹配的连接请求(我发送了连接请求 我等你回复哈)
SYN_RECEIVED:在收到和发送一个连接请求后等待对连接请求的确认 (我收到你的连接请求了哈 我等你回复我)
ESTABLISHED:代表一个打开的连接 数据可以传送给用户(建立连接了哈 我跟你说一下)
第一次握手
客户端向服务器发送SYN标志位(序号是J)并进入SYN_SEND状态(等待服务器确认状态)
第二次握手
服务器收到来自客户端的SYNJ 服务端会确认该数据包已收到并发送ACK标志位(序号是J+1) 和SYN标志位(序号是K) 服务器进入SYN_RECV(请求接收并等待客户端确认状态)
第三次握手
客户端进入连接状态后 向服务器发送ACK标志位(序号是K+1) 确认客户端已收到建立连接确认 服务器收到ACK标志位后 服务端进入连接建立状态