基础知识补课来了!!!
首先我们认识下网页链接的组成:
1. http是一个应用层的协议,详细的这里不介绍。
http是一个很有意思的东东,推荐大家可以看图解系列的关于http的书,很清晰。
2. DNS解析:将www.baidu.com解析成目的IP地址,如果URL里不包含端口号,则会使用该协议的默认端口号。
在本地机器上配置网络时都会填写DNS,这样本机就会把URL发送给这个配置的DNS服务器;如果能够找到相应的URL则返回其IP,否则该DNS将继续将该解析请求发送给上级DNS,整个DNS可以看成一个树状结果,该请求将一直发送到根直到得到结果。
3. 建立socket连接
Socket是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API),通过Socket,我们才能使用TCP/IP协议。
4. 请求连接成功建立后,开始向web服务器发送请求,这个请求一般是Get或Post命令(Post用于Form参数的传递))
5. 应答web服务器收到这个请求,进行处理。如果找到文件,web服务器将该内容传送给响应的Web浏览器。
6. 关闭连接
数据包在TCP/IP模型中的过程:
1. 应用层: 根据当前的需求和动作,结合应用层的协议,确定发送的数据内容,会把这些数据放到一个缓冲区内,然后形成了应用层的报文data
2. 传输层: 这些数据通过传输层发送,比如tcp协议。在该层被打上传输层的报头,主要包含端口号,以及tcp的各种制信息。
tcp是一种端到端的协议,利用这些协议,比如tcp首部的确认序号,根据这些数字,发送的一方不断的进行发送等待确认,发送一个数据段后,会开启一个计数器,只有收到确认后才会发送下一个,如果超过计数时间仍未收到确认则重发,在接受端收到错误数据,则将其丢弃,这将导致发送端超时重发。
3. 网络层:待发送的数据段送到网络层,在网络层被打包,这样封装上了网络层的报头,报头内容含有源及目的地IP地址,该层数据发送单元被称为packet。查找过程如下:
查找过程:
1. 根据目的地址,得到目的网络号,如果处在同一个内网,则可以直接发送
2. 如果不是,则查询路由器,找到一个路由
3. 如果找不到明确的路由,此时路由表中还会有默认网关,也可称为缺省网关,IP用缺省的网关地址将一个数据传送到下一个指定的路由器,所以网关也可能是路由器,也可能只是内网向特定路由器传输数据的网关。
4. 路由器接收到数据后,它再次为远程主机或网络查询路由,若还未找到路由,该数据包将发送到该路由器的缺省网关地址,而数据包中包含一个最大路由跳数。如果超过这个条数,则会丢弃数据包,这样可以防止无限传递。工作在网络层,传输层的数据对它是透明的
5. 如果上述步骤还未成功,则该数据包就不能被传送。