- 推荐书籍《图解TCP/IP》
一、输入url网址后发生了什么?
1、url(统一资源定位器 uniform resource locator)
- 组成:
协议://域名[:端口]/路径
eg:https://www.baidu.com/
file:///H:/BaiduNetdiskDownload/
- 作用:定位指定的资源.
url是uri的一个子集, uri是唯一标识符的意思. 身份证可以是uri, 但不是url.
2、DNS解析
-
域名系统
Domain Name System
, 将域名解析为IP
地址 -
域名解析流程
域名(www.baidu.com) ->
DNS
服务器->返回真实的IP
地址36.152.44.96:443
-> 通过IP
地址访问服务器 -
客户端与服务器建立连接.
客户端和服务端要互相确认身份, 建立连接通道后再发送数据
-
客户端正式向服务端发送请求.
-
服务端处理请求并返回结果
-
浏览器接收到响应后, 做相应的渲染
3、TCP/IP五层协议
TCP/IP五层协议和OSI的七层协议对应关系如下。
在每一层都工作着不同的设备,比如我们常用的交换机就工作在数据链路层的,一般的路由器是工作在网络层的。
在每一层实现的协议也各不同,即每一层的服务也不同.下图列出了每层主要的协议。
-
应用层
-
为进程(客户端应用)和进程(服务器应用)之间提供服务. 应用层协议定义了应用之间进行数据交互的方式.
比如:浏览网页 网易云 用python模拟请求
-
-
传输层
-
负责向两个主机应用进程的通信提供服务.
一个主机可以开启不同的因看应用, 同不同的服务器之间进行通信, 但是都是共用一个传输服务来发送和接受信息
进程 <—> 进程
传输层协议 -
TCP(传输控制协议)
提供面向连接, (尽可能)可靠的数据传输服务。面向连接指的就是, 客户端和服务端进行三次交互验证, 也就是TCP三次握手. 建立连接后才可以发送数据.
- 文件传输(FTP)
- 浏览网页(HTTP)
-
UDP(用户数据协议)
提供无连接的, 不保证数据传输的可靠性
一对多, 一对一, 多对多… 比如:直播、实况游戏
-
-
网络层
-
决定了数据的转寄和路径选择, 封装和分组运输层产生的报文段/用户数据段。主机 <—> 主机
-
网络层协议:
- IP协议:
公共IP:也就是指的传统IP地址, 是唯一的.
局域IP:查看:命令字符–>ipconfig
- IP协议:
-
-
数据链路层
-
负责两台主机之间的数据传输, 向网路层提供数据传输服务。网卡 <—> 网卡
-
数据链路层的作用
比特流在传输媒介上传输时肯定有误差, 数据链路层的作用就是检错和纠错
- *流量控制
- 差错检测
- 差错控制
-
-
物理层
物理层再局部局域网上传送数据帧, 在设备节点传输比特流。光纤 <—> 光纤
ps:物理层和数据链路层:物理层才是真正传输数据的, 数据链路层是用来检查数据完整性的.
二、理解TCP/IP协议
1、概念
-
什么是TCP/IP协议
TCP/IP
并不是单个协议, 而是指一组协议的集合, 所以TCP/IP
也叫TCP/IP
协议族. -
TCP/IP的作用
起到了应用和硬件的之间承上启下的作用.
手机的APP应用 -> 路由器 -> 光猫 -> 运营商网络 -> 互联网
2、TCP/IP三次握手
为了建立可靠的TCP
连接, 尽可能地保证数据传输的正确性.
-
三次握手的过程
- 客户端向服务端发送带有
SYN(同步序列编号)
标识的数据包 --------------------------服务端确认了客户端的发送能力正常 - 服务端向客户端发送了带有
SYN-ACK(确认字符)
标识的数据包-----------------------服务端确认了自己接受能力是正常 - 客户端向服务端返回带有
ACK
标识的数据包-----------------------------------------------服务端确认了自己发送能力, 客户端接受正常
- 客户端向服务端发送带有
-
第2次握手已经传回了
ACK
, 为什么服务端还要返回SYN
?为了告诉客户端, 接收到的信号确实是其发送的信号, 表明了客户端到服务端的通信是正常的.
3、TCP/IP四次挥手
我们以客户端作为主动关闭方来描述四次挥手过程
- 客户端向服务端发送了一个
FIN(finish)
数据包-------------------------------------关闭客户端到服务端的连接通道 - 服务端收到
FIN
后, 返回了ACK
数据包----------------------------------------------------服务端已经知道了客户端到服务端的连接通道已关闭 - 服务端发送
FIN
数据包至客户端, 关闭与客户端的连接------------------------------目的是关闭服务端到客户端的连接通道 - 客户端返回
ACK
数据包确认------------------------------------------------------------------通知服务端客户端已经知道了服务端到客户端之间的连接通道已关闭
三、HTTPS
-
https加密的过程
-
客户端向服务端发送通信请求
-
服务端返回给客户端证书和密钥
-
客户端通过CA中心验证证书的真实性
-
客户端完成认证之后, 使用公钥对发送数据进行加密, 发送给服务端.
-
非对称加密
16 = 2* 8 也可以是 4 * 4 公钥就是拿到了16这个结果 私钥就是某个因数2 通过这样的方式才可以得出唯一解8
-
服务端收到加密后的请求数据后, 使用私钥进行解密.
-
服务器和客户端使用对称加密进行通信
-
-
中间人攻击
插入到客户端和服务端之间的通信, 对服务端伪造客户都安, 对客户端伪造服务端, 拦截通信产生的数据.
- 产生的条件
我们的客户端要主动信任中间人的证书
- 产生的条件