简单地来说,当我们在浏览器上输入URL的敲下回车的时候。
- 浏览器需要查找域名[^domain]的IP,从不同的缓存直至DNS服务器。
- 浏览器会给web服务器发送一个HTTP请求
- 服务器“处理”请求
- 服务器发回一个HTML响应
- 浏览器渲染HTML到页面。
1.首先使用了应用层的 HTTP ( HyperText Transfer Protocol )协议.
应用层负责的事是你的业务逻辑,一个HTTP请求:
GET /index.html
这个请求包含了,
我想干什么?GET,不是PUT.
我想GET什么?index.html,不是index.php.
我想从哪GET?根目录下(/),不是别的(/other)下.
2.然后使用了传输层的 TCP (Transmission Control Protocol) 协议.
TCP 的主要任务是运输它的上层协议的业务逻辑内容,不过可是不很容易,它至少得解决:
后发送的比之前发送的还早到了怎么办?
对方是否掉线了?还传吗?
网络堵塞的时候付款信息是不是得比其它信息先走?
TCP 要保证,要么到不了,要么就得正确地到
3.接着使用了网络层的 IP (Internet Protocol) 协议.
目前,IP 协议包装了上层的数据并传送到指定的 ip 地址.
我们知道有个 MAC 地址,那为何还要发明个 ip 地址呢?要是只有 MAC 地址,我让百度下线就太容易了,把我自己的 MAC 地址改成百度的 MAC 地址,我们一冲突你们就都不能访问了.要想让 Internet 能够正常互相访问需要有个权威的人去维护 ip 地址,不能每个人都能生成使用,实际上确实有那么个机构负责分配 ip 地址,你只能在你的网络或者系统上作威作福,你可影响不到整个 Internet,正应了协议的名称.
4.接着使用了以太网 (Ethernet).
本层包装了上层的数据,使之可以在多种介质上传输,比如无线,光纤,电话线等,而以太网就是来使之能够在各种网线上传输的
如此一通封装后终于变成电信号发送出去了,中间的故事更是说也说不完,如链路层的 ARP 要负责把 IP 地址转换成 MAC 地址,路由器要选择哪条线路更合适等.
等到了服务器端,服务器各层的协议提取自己感兴趣的内容,把上层的数据交给上层处理,一直到达应用层的 HTTP 协议,发送是一个穿衣服的过程,现在是个脱衣服的过程.
应用层负责的事是你的业务逻辑,一个HTTP请求:
GET /index.html
这个请求包含了,
我想干什么?GET,不是PUT.
我想GET什么?index.html,不是index.php.
我想从哪GET?根目录下(/),不是别的(/other)下.
2.然后使用了传输层的 TCP (Transmission Control Protocol) 协议.
TCP 的主要任务是运输它的上层协议的业务逻辑内容,不过可是不很容易,它至少得解决:
后发送的比之前发送的还早到了怎么办?
对方是否掉线了?还传吗?
网络堵塞的时候付款信息是不是得比其它信息先走?
TCP 要保证,要么到不了,要么就得正确地到
3.接着使用了网络层的 IP (Internet Protocol) 协议.
目前,IP 协议包装了上层的数据并传送到指定的 ip 地址.
我们知道有个 MAC 地址,那为何还要发明个 ip 地址呢?要是只有 MAC 地址,我让百度下线就太容易了,把我自己的 MAC 地址改成百度的 MAC 地址,我们一冲突你们就都不能访问了.要想让 Internet 能够正常互相访问需要有个权威的人去维护 ip 地址,不能每个人都能生成使用,实际上确实有那么个机构负责分配 ip 地址,你只能在你的网络或者系统上作威作福,你可影响不到整个 Internet,正应了协议的名称.
4.接着使用了以太网 (Ethernet).
本层包装了上层的数据,使之可以在多种介质上传输,比如无线,光纤,电话线等,而以太网就是来使之能够在各种网线上传输的
如此一通封装后终于变成电信号发送出去了,中间的故事更是说也说不完,如链路层的 ARP 要负责把 IP 地址转换成 MAC 地址,路由器要选择哪条线路更合适等.
等到了服务器端,服务器各层的协议提取自己感兴趣的内容,把上层的数据交给上层处理,一直到达应用层的 HTTP 协议,发送是一个穿衣服的过程,现在是个脱衣服的过程.