分享
 
 
 

HTTP GET请求中所涉及到的网络协议

王朝java/jsp·作者佚名  2006-01-31
窄屏简体版  字體: |||超大  

HTTP GET请求中所涉及到的网络协议Puff (QQ:391741041)

Java的产生与发展与网络有着密切的关系。所以我们在学习java的同时,应该对网络体系结构和网络协议有一个大概的认识和了解。这样才能有助于我们做出更好的应用程序。

在对以下内容进行学习之前,要求你对TCP/IP协议栈有一个简单的了解。要知道网络分层的结构;层与层之间完成相对独立的功能;在上层产生的数据包,会传递给下层,并加上下层的数据包头(header);上层从下层获取数据的过程相反。图1是TCP/IP的体系结构图,注意图中对TCP/IP协议栈的协议描述并不完全。之所以会称之为TCP/IP协议,是因为他们是这个协议栈中最为重要的两个协议。

以下根据马萨诸塞州大学计算机科学系Don Towsley在2004年秋季的网络课程录像中节选的一小段的内容加以翻译和整理。对我们用http(超文本传输协议)向一个web服务器发出一个GET请求时网络所做的工作、以及都使用了哪些协议加以描述。如果大家对这个课程有兴趣,可以在http://www-net.cs.umass.edu/cs653/下载,不过总的视频文件大小有1.88G,网速慢的就不要下载了:)。

1. 用户在web浏览器(如IE)地址栏输入URL(统一资源定位符),比如http://www-net.cs.umass.edu/cs653/。前面的http是协议类型,后面的www-net.cs.umass.edu指被访问的服务器的域名,没有加冒号和端口号表示访问的是默认的端口号80。

2. 由于所发出的数据要通过被访问主机的IP地址进行传输和路由,所以要先通过DNS(域名服务器)服务器将域名解析为IP地址(假设DNS和我们的主机在一个网段):

a) 主机产生一个DNS请求;

i. 传递给传输层,通过UDP(User Datagram Protocol, 用户数据报协议)产生一个UDP 报文(Segment);

ii. 传递给网络层产生一个IP报文(Packet),目的地址是DNS服务器的IP地址(这个地址可能是手工设置的,也可能是通过DHCP(动态主机配置协议)协议自动获得的);

iii. 在数据链路层通过ARP(Address Resolution Protocol,地址解析协议)协议得到DNS服务器的MAC(媒体访问控制子层)地址

iv. 把数据帧(frame)通过以太网传输给DNS服务器

v. DNS服务器将收到的帧向上传给传输层,得到UDP报文。通过UDP报文中指定的端口号传给DNS应用程序。为了表述简单,我们假设要解析的域名在当前的DNS服务器中有相应的表项(如果不在当地,本地DNS服务器还要向上级的DNS服务器发出DNS查询请求,如此递归直到查到要解析的域名的IP地址)。

b) DNS把通过DNS应答将得到的IP地址返回给请求的主机。(终于知道对方的IP地址了,呵呵)

3. 现在,浏览器得到对方的IP地址了。现在可以发出GET请求吗?不!

a) 首先要和对方服务器建立一个TCP(传输控制协议,TCP和UDP同属传输层,但是TCP协议时个可靠的面向连接的协议,要比UDP复杂的多。TCP更适合要求可靠传输的应用)连接。建立连接通过三次握手方法。

b) 这里和以下发送的TCP报文同样要传给下一层:网络层。在Internet中也就是我们说的IP层。同样的,IP层给TCP报文加上IP报头,发送给路由器(假设我们的主机和web服务器不在同一个网内),路由器根据报文中的目的IP地址决定下一跳(Next Hop)的IP地址和端口。这个决定需要查询(lookup)它自身的路由表(而路由表的维护需要路由协议,比如OSPF(开放最短路径优先)等)。IP报文可能通过多个路由器的转发,终于到达了对方的服务器。再剥掉IP报头递交给上层。

c) 建立好了TCP连接,以后发送的数据都可以这条可靠的连接传输了。

4. 和WEB服务器之间的TCP连接建立成功。就可以发送GET请求啦。

5. WEB服务器收到请求,就可以将响应信息通过刚才建立好的TCP连接送回给请求方。

6. 如果是一个html文件,浏览器就可以解释并将它显示在我们的显示器上面了。

注意到这个过程里面的三个重要的地址:域名、IP地址和MAC地址。它们是网络中不同的层,不同的协议所需要的地址。它们之间的关系有点像电话系统中的概念,域名对应人名(不过域名不能重复),IP地址对应电话号码,MAC地址对应程控交换机中这路电话所在的物理位置号。我们打电话首先通过人名找电话,这时电话本就像DNS一样;然后我们拿起电话拨号,程控交换机根据你拨的号码找到其电路所在位置(概念上);在两部电话之间建立一个连接;然后就可以通话了。

2005-7-1

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有