网络是怎样连接的-总结

第一阶段

输入网址

准确地说叫URL,包括了http:,ftp:,file:等等格式。意义是访问不同的服务器,Web服务器,FTP服务器……

浏览器解析URL

拆分URL中的元素,通过拆分这些元素,能够知道要访问的服务器域名和具体文件路径

HTTP协议

HTTP协议定义了客户端和服务器交互的消息内容和步骤,客户端发的消息分两部分,操作谁?干什么?第一部分就是目标名,第二部分包括HTTp的方法,主要有GET,POST,HEAD,OPTIONS,PUT,DELETE。处于数据保护的目的,GET,POST用的相对多一些

生成HTTP请求

请求消息:第一行为请求行(大致了解请求行内容),然后接一个消息头,消息体。

响应消息:状态行-消息头-消息体

发送请求后会收到响应

状态码

1XX:告知请求处理进度

2XX:成功

3XX:需要进一步操作

4XX:客户端错误

5XX:服务器错误

收到状态码后,浏览器提取数据,就可以看到网页的大致样子了,如有图片等资源,则还要根据标签留出空间,根据需要再次访问Web服务器

向DNS服务器查询IP地址

HTTP消息需要靠TCP/IP协议在网络中发送,这时需要服务器的IP地址。这时操作系统先查本地hosts文件有没有定义,没有的话查最近的DNS服务器,像windows会根据TCP/IP设置里的DNS去查询。当然DNS服务器本身也是分层的。通过.来分割成不同的域。DNS之间也存在互相查询的情况

第二阶段

应用程序(Socket,解析器)-操作系统(TCP/IP,ICMP,ARP,RIP)-驱动程序(网卡驱动)-硬件(网卡)

套接字

通信流程

服务端:Bind-Listen-Accept-Read/Write-Close

客户端:Connect-Write/Read-Close

Connect和Accept的过程会用到三次握手,Close关闭连接会用到四次挥手

对数据进行处理

HTTP数据消息过长需要拆分,过短会产生粘包情况。

使用ACK号确认网络包是否已收到

超时重传:收到数据包后要返回ACK号,若没有返回,则发送方在一定时间后重发数据包。此外,由于网络本身的这个机制,网卡,路由器不需要再有错误补偿机制,检测到错误就丢弃包即可

滑动窗口:由于可能出现接收方的ACK因为网络堵塞晚一点到的情况。如果发送方等待时间过短,可能还是会重发数据包,造成网络更堵;所以需要等待时间长一点,但是这样无疑又损害了正常情况下网络传输效率。故引入滑动窗口方式,发完一个数据包,继续发下一个,把等ACK的时间利用起来。接收到的数据先存进缓冲区,为了避免溢出需要告诉发送方自己还能接受多少数据,从而供发送方动态地调整自己发送的数据

四次挥手

A发FIN,B发ACK,B发FIN,A发ACK

为什么最后A(发送FIN报文方)要等2MSL

如果B最后没接到ACK,可能会再发一次FIN,但这时A如果套接字已经删除,恰好同一个端口又被分配了新的套接字,重传的FIN报文就会就会跑到新的套接字里。

具体等待多长时间没有明确规定。30s~2min都有可能

数据包的基础知识

TCP/IP包的结构

MAC头部-- IP头部–TCP头部–数据块

ARP查MAC地址:广播问这个IP的MAC是啥

HTTP协议
HTTP消息结构:请求行,请求头,空行,请求数据(下面以POST为例)
在这里插入图片描述
1,请求行包括请求方法,URL,HTTP协议三部分
请添加图片描述
2,请求头就是一个键值对类型
Host:请求主机名
User-Agent:用的浏览器类型
Connection:连接类型长连接
请添加图片描述
3,空行
表示请求头结束,开始发送请求体了

4,请求数据通常是一个JSON格式的字符串(如果有的话)
请添加图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值