博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《网络是怎样连接的》第一章
阅读量:4922 次
发布时间:2019-06-11

本文共 2044 字,大约阅读时间需要 6 分钟。

1.1 生成HTTP请求

URL的各种格式

1.1.2浏览器先要解析URL

      

1.1.3 省略文件名的情况

http://www.lab.glasscom.com         (当没有路径名时,就代表访问根目录下事先设置的默认文件)

1.1.4 HTTP的基本思路

 

HTTP的主要方法

1.1.5生成HTTP请求消息

1.1.6发送请求后会收到响应

 HTTP状态码概要

 

1.2向DNS服务器查询web服务器的IP地址

生成HTTP消息之后,接下来我们需要委托操作系统将消息发送给Web服务器

简单了解一下消息传送的具体过程,发送者发出的消息首先经过子网中的集线器,转发到发送者最近的路由器上。接下来,路由器会根据消息的目的地判断下一个路由器的位置,然后将消息发送到下一个路由器,即消息再次经过子网内的集线器被转发到下一个路由器。前面的过程不断重复,最终消息就被传送到了目的地。

IP地址 32比特 按照8比特(一字节)为一组分成4组

在IP地址的规则中,网络号和主机号连起来总共是32比特,但这两部分的具体结构是不固定的。在组建网络时,用户可以自行决定它们之间的分配关系,因此我们还需要附加消息(子网掩码)来表示IP地址的内部结构。

 

IP地址的表示方法

顺带一提,主机号部分全部为0或者全部为1时代表两种特殊的含义

全0:表示整个子网

全1:表示向子网上所有设备发送包,即“广播”

 

1.2.3 Socket 库提供查询IP地址的功能

查询IP地址的方法非常简单,只要询问最近的DNS服务器“www.lab.glasscom.com”的IP地址是什么  DNS服务器就会回到该服务器的IP地址为xxx.xxxx.xxx.xxx

对于DNS服务器,我们的计算机上有相应的DNS客户端(DNS解析器,或简称解析器,解析器实际上是一段程序,它包含在操作系统的Socket库中)、

Socket库是用于调用网络功能的程序组件集合

 

1.2.4通过解析器向DNS服务器发出查询

调用解析器后,解析器会向DNS服务器发送查询消息,然后DNS服务器会响应消息,响应消息中包含查询到的IP地址,解析器会取出IP 地址,并将其写入浏览器指定的内存中。

1.2.5解析器的内部原理

解析器本身也不具备使用网络接发数据的功能。发送消息这个操作并不由解析器自身执行,而是委托给操作系统内部的协议栈来执行,然后通过网卡发送给DNS服务器

顺带一提,向DNS服务器发送消息时,我们当然也需要知道DNS服务器的IP地址。只不过这个IP地址是作为TCP/IP的一个设置项目事先设置好的。不需要去查询。

Windows中的设置如下图

 

1.3全世界DNS服务器的大接力

 

1.3.1DNS服务器的基本工作

来自客户端的查询信息包含以下3种信息

(a)域名

       服务器、邮件服务器(邮件地址中@后面的部分)的名称

(b)Class

      Class的值永远是代表互联网的IN

  (c)记录类型

      表示域名对应何种类型的记录。当类型为A时,表示域名对应的时IP地址,当类型为MX时,表示域名对应的是邮件服务器

DNS服务器会从与IP地址的对照表中查找相应的记录,并返回IP地址

 

1.3.2域名的层次结构

 

1.3.4通过缓存加快DNS服务器的响应

DNS服务器有一个缓存功能,可以记住之前查询过的域名。如果要查询的域名和相关信息已经在缓存中,那么就直接返回响应

并且,当要查询的域名不存在时,“不存在”这一响应结果也会被缓存,这样,当下次查询的这个不存在的域名时,也可以快速响应。

缓存机制有一点需要注意,那就是当信息被缓存后,原本的注册信息可能会被修改,这时缓存的信息就有可能是不正确的,因此,DNS服务器中保存的信息都会设置一个有效期,当缓存中的信息超过有效期后,数据就会从缓存中删除。

 

1.4委托协议栈发送消息

 

1.4.1数据收发操作概览

(1)创建套接字(创建套接字阶段)

(2)将套接字连接到服务器的套接字上(连接阶段)

(3)收发数据(通信阶段)

(4)断开管道并删除套接字(断开阶段)

 

1.4.2创建套接字阶段

计算机会同时进行多个数据的通信操作,比如打开两个浏览器窗口,同时访问两个web浏览器。这时有两个数据收发在同时进行,也就需要创建两个不同的套接字。

同一台计算机上可能同时存在多个套接字,在这种情况下,我们就需要一种方法来识别某个特定的套接字。这种方法就是描述符

只要我们出示描述符,协议栈就能够判断出我们希望用哪一个套接字来连接或者收发数据

1.4.3连接阶段

应用程序调用Socket库中名为connect的程序来完成这一操作,需要指定描述符、服务器IP地址和端口号这3个参数

端口号,就是用来让通信的另一方能够识别的出套接字的机制。

服务器上所使用的端口号时根据应用的种类事先规定好的   web是80号端口,电子邮件是25号端口

 

转载于:https://www.cnblogs.com/zhuxuan1997/p/9771186.html

你可能感兴趣的文章
[HDU] 1025 Constructing Roads In JGShining's Kingdom - 二分的求最大递增非连续子序列
查看>>
decode函数
查看>>
SCP注意事项
查看>>
英国NHS
查看>>
ScrollView嵌套GridView和ListView行高问题
查看>>
测试秒杀新版本3.5 stieserver cms
查看>>
Lua获取当前时间
查看>>
redis5.0主从配置
查看>>
JavaScript严谨模式(Strict Mode)提升开发效率和质量
查看>>
[洛谷P4092][HEOI2016/TJOI2016]树
查看>>
nginx配置比较杂乱的总结
查看>>
docker 真实---安装基本映像 (一)
查看>>
php中使用array_slice将数组中的元素分类
查看>>
关于C#的partial修饰符
查看>>
哨兵元素的应用总结
查看>>
关于Request.PathInfo
查看>>
fiddler抓手机报文的配置指南
查看>>
Linux/CentOS下修改MAC地址
查看>>
Centos7下yum安装mongodb
查看>>
Vmware Tools is currently being installed on your system(转)
查看>>