浏览器怎样将信息发送给web服务器

1. 浏览器根据网址生成请求信息

a) 浏览器对URL进行解析,确定了web服务器和文件名,生成HTTP请求信息

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

a) 调用Socket库中的解析器程序,传入(域名,Class,记录类型),解析器据此生成查询信息
b) 查询信息被操作系统的协议栈程序发送给邻近的DNS服务器
i. 怎样委托协议栈发送消息:
1. 客户端调用Socket库中的socket创建套接字,协议栈返回一个描述符
2. 调用Socket库中的connect(描述符,服务器IP,端口号80)进行连接:
a) 客户端将自身IP、端口等控制信息告知协议栈
b) 客户端将自身IP、端口等控制信息告知服务器
i. 客户端委托IP模块发送TCP包(SYN=1)、初始序列号、窗口大小给服务器
IP模块,服务器IP模块将信息传递给其TCP模块,TCP模块根据信息找到对应
套接字
c) 服务器返回响应ACK、TCP包(SYN=1),同样含初始序列号、窗口大小,
d) 客户端检查该TCP包SYC=1,给服务器返回ACK
3. 调用Socket库中的write将信息发送给对方
a) 调用write将数据传送给协议栈,等到其内部缓冲区积累一定数据后发送
c) 邻近的DNS服务器保存有根域的服务器地址,将信息传送过去
d) 由于层级更高的DNS服务器含有低一级DNS服务器的IP地址,因此信息被一层层往下传送,直至目标DNS服务器
e) DNS服务器返回查询得到的IP地址,传回客户端
i. 客户端怎样接收响应信息
1. 调用read将控制流程转移到协议栈,当无响应消息时该应用程序被暂时挂起,直至接
收到数据
3. 将接收到的数据块进行还原,再交给应用程序
ii. 怎样断开连接
1. 服务器端应用程序调用close,协议栈生成TCP头部(FIN=1),委托IP模块发送给客户

3. 客户端确认其中FIN=1,返回ACK号表示确认收到
4. 客户端调用close,也向服务器发送TCP头部(FIN=1)
5. 服务器也回应ACK号
6. 为了防止误操作,等待一段时间后,才删除套接字

3. 现在既有请求信息,又有目标服务器的IP地址,就可以进行委托操作系统将信息发送给web服务器了

4. 协议栈将数据进行打包,然后交给网卡

a) TCP模块给数据块加上TCP头部
b) IP模块给数据块加上IP头部、MAC头部
i. 生成IP头部:套接字中记录的IP地址与路由表中的目标地址进行匹配,得到下一路由器的IP地址(网关)。填写协议号等其它信息
ii. 生成MAC头部:填写以太类型、发送方MAC地址、接收方MAC地址。其中使用ARP来获取接收方MAC地址

5. 网卡将IP模块生成的01数字信息转换成电信号或光信号经过网线传输到路由器

a) 网卡驱动从IP模块获取包后,复制到网卡内的缓冲区中
b) MAC模块从缓冲区中取出包,为其加上报头、起始帧分界符、帧检验序列
i. 报头:56比特,用于确认包的读取时机
ii. 起始帧分界符SFD:8比特,确认帧的起始位置
iii. 帧检验序列FCS:位于末尾,用于检测错误
c) 通过网线发送包 两种方式:半双工、全双工
i. MAC模块将数字信号转换为通用电信号,发送给 信号收发模块
ii. 信号收发模块 对信号进行格式转换,并通过网线发送出去
iii. 半双工可能发生信号碰撞,全双工不会
反过来,网卡怎样接收包:
信号收发模块接收信号并转换为通用格式,发送给MAC模块,MAC模块检查MAC头部中的MAC地址是否与自己一样,如果一样,就将包放到缓冲区,然后产生中断,调用网卡驱动 从缓冲区取出包,通过MAC头部的以太类型 判断协议类型(例如0080表示IP协议),将包交给相应协议栈(TCP/IP协议栈)
交换机 接收转发 包:(本身不会成为发送方或接收方,只是将包转发出去)
接收流程基本一样,但不会检验MAC地址,而是直接将所有包放到缓冲区以后,根据MAC地址表来决定 通过交换电路 转发到哪个端口
交换电路:网格结构,交叉点为电子控制的开关,可同时传输多路信号

6. 路由器将数据传输到互联网接入路由器

a) 路由器怎么转发包:
i. 通过端口接收包:根据包中MAC头部写的 接收方MAC地址(也就是路由器端口MAC地址) 决定去留
ii. 转发模块根据包中IP头部得知接收方IP地址,在路由表中查询目标地址
1. 路由表中的最长匹配规则:
优先发给网络号比特数更长的目标地址(即子网掩码中255更多者)
2. 路由表中无匹配记录则丢弃(交换机在MAC地址表中未找到匹配记录时是 将包转发到所
有端口),通过控制报文协议ICMP告知发送方。
实际上路由表有一条子网掩码为0.0.0.0的记录,任何记录都能匹配,被称作默认路由。
iii. 转发模块将包转发到对应端口,再发送出去
1. 发送前,路由器的一些工作:
a) 更新TTL字段(每经过一个路由器,值减一):避免包陷入死循环
b) 根据MTU对数据包进行分片(若需要分片但标志字段设置了禁止分片,则丢弃这
个包,ICMP通知发送方)
区分IP分片与TCP分段:
IP分片:网络层数据包大小超过了通信协议规定的最大包长度MTU
TCP分段:传输层TCP协议的一个选项,当数据包大小 超过了TCP报文所能携带的最
大数据量MSS,就会分段。
由于TCP协议在传输层会对数据包进行分段,因此在网络层就一定不会再分片,分片
是使用UDP协议导致的,UDP协议无法限制包大小。
2. 路由器输出端口有多种类型,假设现在是以太网端口,则和上述将数据交给网卡 传输到
路由器的步骤一样了。
b) 路由器与交换机的关系
i. 路由器负责将包传输给通信对象这一整个过程,交换机负责将包传输到下个路由器这一中间过程。
ii. 路由器本身不负责包的传输,而是委托各种通信技术 将包传输到下一个路由器。
c) 路由器的附加功能
i. 地址转换:内网中的设备不能和互联网直接收发网络包,需要使用地址转换机制。路由器常作为地址转换设备。
1. 当内网设备访问互联网:发送方地址变成地址转换设备的互联网接入端口地址,并分配一个空闲的端口号,将改变前后的地址和端口号记录在一张表中。改写端口号可以提高公有地址利用率
2. 接收服务器返回的包:包会发送到地址转换设备,再通过之前记录的表找到对应私有地址和端口号,改写接收方信息后将包发送进内网设备。
3. 互联网主动访问内网:对于没有访问互联网的内网设备,表中没有其地址转换记录,也就意味着互联网无法主动向其发送包,除非手动添加记录。
ii. 包过滤:根据MAC头部、IP头部、TCP头部来决定是否丢弃包

7. 路由器作为接入点实体时,称作互联网接入路由器。将数据传输到互联网骨干网络

这里假设使用ADSL接入网技术
ADSL Modem:为ADSL提供调制解调的机器 ADSL:ADSL通过利用电话线,实现高速有线互联网接入
训练(握手):Modem通电后发送测试信号,根据信号接收情况选择合适频段数量、每个频段的比特数
a) 互联网接入路由器将包发送给ADSL Modem:互联网接入路由器 取出包中的IP包,并在前面加上MAC头部、PPPoE头部、PPP头部
b) ADSL Modem将包拆成小格子(信元)
i. 这里是举例PPPoE方式:先将PPP消息装入以太网包、再将以太网包拆分并装入信元
由于要加各种头部,MTU相对更小,降低了网络效率
ii. PPPoA方式:直接将PPP消息装入信元,开头不添加MAC头部和PPPoE头部
由于没有MAC头,无法通过以太网传输PPP消息,ADSL Modem与路由器无法分离
iii. 也可以不使用PPP协议,而是使用DHCP协议下发TCP/IP配置信息:无用户名、密码
c) 再将信元转换成电信号:ADSL采用正交振幅调制,并使用多个频率合成的波来传输信号
d) 信号被发送给分离器:
信号从用户发送出来时,分离器什么也不做,信号流向室内电话线
相反,信号被从电话线传入时,分离器负责将低频信号传给电话机、高频信号传给ADSL Modem
e) 再经过配线盘、保安器抵达电线杆上的电话电缆,流向电话局附近埋设电缆的电缆隧道,进入电话局
f) 经过配线盘、分离器到达DSLAM(局端多路Modem,类似多个ADSL Modem组成的设备,但使ATM接口),被拆分成ATM信元 到达 BAS(宽带接入服务器)
i. 怎样找到BAS的:PPPoE协议的发现机制得到BAS的MAC地址,类似ARP广播
g) BAS将信元还原成网络包,丢弃MAC头部、PPPoE头部,添加隧道头部,发送给隧道专用路由器,该路由器取出IP包并转发至互联网内部

BAS的功能:
a. 用户认证:使用PPPoE(以太网的点对点协议)实现
a) PPP拨号上网:向运营商接入点拨打电话、登录、将登录用户名与密码发送到认证服
务器进行校验、认证服务器返回IP地址等配置信息、用户的计算机据此配置IP地址、PPP
借用HDLC协议作为容器发送网络包
i. 如果使用路由器上网,那么BAS下发的参数被配置到该路由器上,公有地址也是分配
给该路由器,计算机就没有公有地址了:此时计算机被分配私有地址,发送的包要经过
地址转换才能转发到互联网
b) PPPoE:使用以太网包代替HDLC来装载PPP协议
b. 使用隧道传输网络包
其它的接入网技术:
a. 光纤接入网FTTH
a) 单模光纤与多模光纤:相位一致的角度有单个还是多个
单模光纤:纤芯细,只能传导一条光线,信号失真小
多模光纤:纤芯粗,能传导多条光线,对光源和光敏电阻的要求小
b) 波分复用:上行光信号与下行光信号混杂,必须让它们采用不同波长的光,使用棱
镜原理分离

8. 接着进入防火墙、缓存服务器,最后抵达web服务器。

9. 接收响应的过程是逆向的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值