TCP-IP基础
2.1 TCP/IP 网络分层
同一设备:进程通信方式:管道,消息队列,共享内存,信号
不同设备:通用的网络协议 TCP/IP
![tcp-ip协议.png](https://i-blog.csdnimg.cn/blog_migrate/9750b9ce8ee129b71794ad8ce867c556.png)
![TCP-IP.png](https://i-blog.csdnimg.cn/blog_migrate/f68c51b0bce2334f5655d6f6189ab3cb.png)
应用层
专注于为用户提供应用功能:HTTP,HTTPS,FTP,Telnet,DNS,SMTP
传输层
应用数据包传输给传输层,传输层为应用层提供网络支持,TCP、UDP。
TCP:流量控制,拥塞控制,超时重传,三次握手,四次挥手。。。
UDP:只负责发送数据包,不保证可靠性。
MSS:TCP 最大报文段长度,在TCP中把每个分快称为TCP段
传输层需要负责将数据包传输给应用层的对应应用,传输层根据报文中的端口号判断发送给哪个应用。
端到端传输
网络层
点到点传输,提供实际的传输功能。
IP:IP地址,网络地址+主机号,子网掩码,路由,
IP 协议的寻址作用是告诉我们去往下一个目的地该朝哪个方向走,路由则是根据「下一个目的地」选择路径。寻址更像在导航,路由更像在操作方向盘。
网络接口层
MAC:IP报文被封装为数据帧,通过局域网进行传输,通过MAC地址进行寻找,ARP协议负责获取接收方的MAC地址。
总结
![TCP-IP报文格式.webp](https://i-blog.csdnimg.cn/blog_migrate/b49bbec7eff408ec6ff1ec6ab6d7c78e.png)
2.2 浏览器从输入网址到网页显示流程
HTTP/HTTPS 协议
第一步:URL解析 URL:协议+服务器域名+资源路径名
第二步:生成HTTP/HTTPS请求报文。
第三步:TCP --> IP --> MAC --> 网卡 --> 交换机 --> 路由器 --> 服务器
第四步:服务器解析请求并生成应答报文返回客户端
第五步:浏览器接收应答报文解析,网页显示
域名–>(DNS)–>IP地址
域名层级关系,根域名–>顶级域名–>权威域名
www.server.com
根 DNS 服务器(.)
顶级域 DNS 服务器(.com)
权威 DNS 服务器(server.com)
域名解析:
协议栈
通过DNS获取IP地址后,将HTTP的传输工作交给协议栈,由协议栈中的TCP,IP,网络接口层进行传输。
TCP
报文格式
源端口+目的端口 确定发送应用和接收应用
包序号,解决报文乱序问题
确认号,确认报文是否发送成功,对方是否接收到
状态位,SYN:发起连接,ACK:确认回复,RST:重连接,FIN:结束连接
窗口大小,TCP流量控制窗口,告诉对方自己的报文处理能力
拥塞控制
TCP三次握手建立连接
client–>server: SYN (SYN = 1, Seq Num = client_isn)
server–>client: SYN + ACK (SYN = 1, ACK = 1, Seq_Num = server_isn; Ack_Num = client_isn + 1)
client–>server: ACK / ACK + Data (ACK = 1, Ack_Num = server_isn + 1)
TCP四次挥手断开连接
client–>server: FIN (Seq_Num = u,FIN = 1)
server–>client: ACK (ACK = 1, Seq_Num = v, Ack_Num = u + 1)
server–>client: FIN (FIN = 1, ACK = 1, Seq_Num = w, Ack_Num = u + 1)
client–>server: ACK (ACK = 1, Seq_Num = u + 1, Ack_Num = w + 1)
client 进入TIME-WAIT状态等待 2MSL 后进入closed状态。
IP路由寻址
IP报文格式
MAC局域网传输
以太帧格式
目标IP地址通过ARP协议获取,ARP 协议会在以太网中以广播的形式,对以太网所有的设备喊出:“这个 IP 地址是谁的?请把你的 MAC 地址告诉我”。
然后就会有人回答:“这个 IP 地址是我的,我的 MAC 地址是 XXXX”。
如果对方和自己处于同一个子网中,那么通过上面的操作就可以得到对方的 MAC 地址。然后,我们将这个 MAC 地址写入 MAC 头部,MAC 头部就完成了。
网卡–>交换机–>路由器–>服务器
最终封装好的数据包经由网卡,交换机,路由器传输到对端服务器,对端服务器解析后生成HTTP/HTTPS响应报文,通过相似的方式返回客户端,客户端浏览器解析后对网页进行显示。