HTTP请求

当我们输入http://www.baidu.com类似这种网址的时候我们经历了什么?

 

 

dns服务,请求得到www.baidu.com的ip地址,请求的流程:

本地的缓存中=》上一级的dns服务器=》更上一级的dns服务器=》。。。=》得到ip地址

 

应用层协议:http

 

存在:www.baidu.com

需要做的事情:

2。按照http协议封装成相应格式的应用层的数据包

 

Http协议所使用的传输层的协议是TCP协议,

传输层协议:Tcp

传输层需要做的事情:

加上源端口,目的端口(注意没有ip等)等tcp的首部,构造成为TCP数据包进行发送

 

当封装好了TCP的数据包之后进入网络层的封包

网络层的协议:ip协议

 

需要进行的处理是:加上网络层的首部,即ip首部,包含的内容有ip v4地址即其他必要的首部信息,包括数据长度,有一定的长度限制,涉及到报文分组。

 

封装好了TCP数据包以后,进入数据链路层的协议封装,即以太网帧

设计的协议:MAC地址和数据链路层的相关协议,ARP,ppp,HDLC等协议

从网络层得到的数据包是带有ip地址的,根据目的ip地址广播arp请求得到物理地址,根据物理地址进行封装得到数据帧,在链路层发送该数据帧。

 

绝大部分的用户的数据帧处在某一个局域网当中,比如说我们公司所有的人用了一个局域网,当我们需要向公网发送一些数据,我们用的是本地的ip,例如各种局域网ip地址,这种ip地址没有办法在公网进行路由,这时候我们使用到的路由器上面会运行NAT协议,我们的本地ip地址将被转化为我们公司所有人共同使用的一个公网的IP地址。最终能够将以太网帧发送到公网上。

 

物理层指的是相关的物理传输介质等共同作用,实现数字或者模拟信号的传输

进入网络的数据包可能会经历的流程

调制器(将数字信号转成模拟信号能够进行线路传输)

集线器,交换机(也叫交换式集线器):集线器将来自不同的端口的信号进行中继重整,采用广播的方式进行发送,不需要该信息的主机会丢弃掉报文,而需要的会拿到报文。交换机的功能更为强大一些,能够根据端口进行转发报文,降低局域网中的冲突,其实通过网桥分发以后和交换机相连的线路不存在冲突域,就不需要CSMA、CD协议在这条线路上

(交换机和路由器的区别:二者都提供转发功能,但是交换机是链路层上的,而路由器是网络层的,第一次因为交换机和路由器分不清还弄了一个笑话。路由器上连接的是不同的网络,而交换机上面连接的是同一个网络的不同主机,所以在某一个公司或者局域网中,当我们需要的仅仅是转发的功能,而不是希望重新去建一个子网的话,应该使用的是交换机,虽然二者在日常使用当中没感觉出差别来,但是差别巨大)

解调器(将模拟信号转为数字信号)

 

网络的核心====》路由器

路由器的作用是根据网络号(注意是网络号)转发相应的ip报文,其实质就是一个看成一个负责链路交换和网络层的大型的主机(也可以是小型的)。根据PDU,SDU的内容而言,他会根据链路层解帧到ip数据包,ip数据包根据网络号找到相应的链路发送ip数据包,发送时同样需要进行MAC地址的封装成帧。经过复杂的线路最终达到目的地。

 

路由器是一个重要的网络组建,需要转发数据包,维持路由表,需要特定的协议进行路由,OSPF及RIP分别为开放链路协议,及距离向量协议,这二者属于一个自治区域内的内部网关协议。涉及到不同的自治区域内的网络的路由,需要用到的区域网关协议,外部网关协议,BGP等。这些协议维持的是一个路由表,转发是某个路由器的工作,而路由表的维持是多个路由协同的结果。

 

经过复杂的网络传输最终,我们的数据帧到达了百度主机所在的网络中,这时候会进行之前等的链路层到网络层等的处理。

 

百度是一个很复杂的机构,有很庞大的网络,当我们的数据帧到达了百度的主机之后,可能会进行相应的转发等的处理,如负载均衡等等之类的。百度的某一太主机又将报文发送到不同的主机负载均衡处理。

 

当我们到达了某台主机时,被满足CGI标准的服务器所接受,就成为了我们正常使用的Java Web,中的servlet,request,response等中所操作的各种数据和对象。

 

分析TCP和UDP二者的不同

==被误导TCP是面向连接的,其实TCP和UDP都不是面向连接的。原因ip分组不是面向连接的,当我们讲到建立可靠的连接的时候,链路层的差错控制机制,以及TCP需要进行的相关的保证二者协同才能够可靠连接。链路层差错控制能够把保证当前帧不错,无法保证丢帧,等的出现,tcp对于每一个收到的数据进行确认(这是udp不具备的),所以tcp和udp的区别就体现在这个确认的机制里面。tcp能够保证不丢包,不失序,而udp得到数据包不能够保证这一点。所以tcp的描述是面向无连接的可靠的传输层协议,udp是面向无连接的不可靠的尽最大可能的交付的传输层协议。

 

所以对于不同的功能而言,尤其是现在的网络技术这么发达的情况下,基于不同的应用需求采用tcp和udp不同的协议是需要的。文件传输ftp等仍旧使用tcp协议,而对于类似于视频传输,直播技术,用到udp协议是正常的。直播和视频是无法忍受tcp这种延时和相关丢帧丢包需要确认而无法继续向前播放的问题的。rtp等协议就是基于udp协议的实时数据协议。

 

关于PDU,SDU系统概念的图像

网络封包的过程如下

 

当然我们有可能在某些VPN软件的控制下对一些网站进行访问,如用一些VPN访问谷歌等国外网站

这时候我们输入 ipconfig的时候发现机器的ip地址发生了变化,其实实际的过程是我们封装的传输层协议中使用了一些隧道协议,而ipconfig查询出来的ip地址被封装到了传输层的数据中,而我们在到达相应的VPN路由器或者主机的时候,我们在网络上流通的报文还是我们自己的设备,如运行了NAT的路由器的公网IP,和对应的vpn路由器或主机的ip地址为目的地址,这一点和正常的网络通信没有区别。

但是,当到达vpn路由器或主机的时候,解析下一层协议发现为ip协议这时候,我们就知道该报文为一个vpn报文,里面有隧道协议的成分在里面,于是把到达的报文的内容部分取出来,得到真正的目的ip地址和路由的时候就能够根据这个真正的目的ip,根据这个ip访问我们所需要的数据,VPN节点相当于做了一个中转站的作用,而我们自己主机的IP地址的变化,实际上是将我们自己主机的IP变化为了vpn路由器所连接的网络的某台可用主机的ip。至于具体是怎么访问的请自行查阅资料。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章