网络初探01-从浏览器到服务器过程全貌学习总结

网络初探01

前言:

最近在学习网络方面的知识,这篇文章是看完《网络是怎样连接的》这本书之后的学习总结。

总览

在这里插入图片描述
上图是一个Http网络请求的主要流程,我们目前主要关注的是客户端和服务端是怎样发送和接收请求的,至于中间的网络运营商怎样转发暂时不是我们的关注点。
我们从用户在浏览器输入地址开始,一直到服务器接收请求之后返回响应为止,一路探索网络是如何运作的。

客户端发送请求

浏览器根据域名请求DNS服务获取IP

· 假设用户要访问http://www.processon.com,当用户在浏览器输入网址之后,浏览器是没办法直访问这个网址的,因为要访问服务器必须使用协议:IP:端口这样的格式才行。
· 那么怎样才能让浏览器获得IP和端口呢?
首先,当用户没有输入端口的时候,浏览器会使用默认端口号80,所以只要服务器的端口是80,用户就不需要输入端口号,可以省略。剩下的IP需要通过DNS服务来查询,DNS是域名系统(英文:Domain Name System,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用UDP端口53。当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。
· DNS提供的功能就是通过域名查询IP的功能,比方说DNS服务器中保存了这样一个key-value结构的数据:www.processon.com111.3.78.231。那么浏览器就可以通过DNS查询到域名的IP是111.3.78.231,然后拿到IP之后再去访问这个IP地址下端口为80的程序了。
· 实际上DNS的域名查询功能可以是域名与IP为一对多的关系,那么查询到多个IP应该使用哪一个呢,可以通过轮询,每次访问的时候,都用下一个IP就行了。

浏览器调用Socket库创建套接字

· 在浏览器拿到IP之后,需要访问这个服务器的时候,需要调用操作系统的Socket库来建立连接,Socket库可以看做是操作网络的一些组件的集合,所有的应用程序使用网络功能的时候都需要调用这个库。我们常用的connect、close等都是这个库的一些组件,关于这个库的其他知识点暂时还没学习到,就不展开说明了。
· 首先浏览器会去创建套接字,简单来说就是调用Socket库填写服务器IP和端口,再申请当前浏览器在这次连接使用的端口号。

浏览器发送数据

· 有了套接字之后,就可以发送数据了,当然在http请求中需要先向服务器建立TCP连接之后才能发送数据,发送数据和建立连接的通信过程是差不多的,只是TCP的头部设置不同,现在暂时关注发送数据的阶段。
· 浏览器将数据和套接字对象交给Socket库,Socket库将信息交给TCP模块,然后TCP模块会创建一个TCP头,将TCP头放到数据的前面,然后把整体交给IP模块,IP模块将TCP传递过来的所有内容都作为数据处理,然后在前面加上IP头和MAC头࿰

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值