【网络是怎么连接的】—— 1.4 委托协议栈发送消息

目录

1.4.1 数据收发操作概览

1.4.2 创建套接字阶段

1.4.3 连接阶段:把管道接上去

1.4.4 通信阶段:传递消息

1.4.5 断开阶段:收发数据结束

本章测试


1.4.1 数据收发操作概览

委托操作系统内部的协议栈向web服务器发消息,发的HTTP消息是数字信息,不仅对于浏览器,对于使用网络的应用程序也一样,都需要使用Socket 库中的程序组件。

收发数据操作的基本思路:

收发数据的两台计算机之间连接一条数据通道,数据沿着这条通道双向流动。

(图中显示的是TCP协议,还有一种UDP(User Datagram Protocol,用户数据报协议))

 收发数据操作之前,双方需要先建立管道,关键在于管道两端的数据出入口,这些出入口称为套接字。因此要先创建套接字,然后再将套接字连接起来形成管道。服务器一方先创建套接字,然后等待客户端创建套接字,延伸出管道,向服务器套接字连接管道。数据全部发送完毕,连接的管道断开,套接字删除。

因此一共是四个阶段:创建套接字、连接管道、收发数据、断开管道并删除套接字,下面逐一介绍。


1.4.2 创建套接字阶段

调用 Socket 库中的 socket 程序组件即可,第二章会详细介绍。

套接字创建完成后,协议栈会返回一个描述符,用来识别不同的套接字,因为可能同时打开多个网页或多个联网程序,类似于坐飞机托运行李,行李上贴的标签。


1.4.3 连接阶段:把管道接上去

调用Socket 库中 connect 程序组件实现。调用时需要:描述符服务器 IP 地址端口号3个参数。

描述符:上文的描述符,判断使用哪一个套接字去和服务器端的套接字进行连接,并执行连接的操作。

IP地址:1.3里讲的服务器的IP地址。

端口号:这个在1.1里也讲过,IP地址只能确定网络中的计算机,没法具体到某个套接字,因此需要端口号。不能使用描述符代替,描述符是计算机内部应用程序识别套接字的机制,端口号是客户端和服务器之间用来识别对方套接字的机制。另外,服务器上所使用的端口号是根据应用的种类事先规定好的,比如web是80,电子邮件是25.

端口号的规则是全球统一的,为了避免重复和冲突,端口号和 IP 地址一样都是由 IANA(Internet Assigned Number Authority,互联网编号管
理局)这一组织来统一管理的。


1.4.4 通信阶段:传递消息

发送消息由Socket 库中 write 程序组件实现。应用程序在内存中准备好要发送的数据(HTTP 请求消息),调用 write 时,需要指定描述符发送数据,协议栈进行发送,服务器,解析收到的数据内容并执行相应的操作,向客户端返回响应消息。

接受消息由read 程序组件实现,调用 read 时需要指定用于存放接收到的响应消息的内存地址(即接收缓冲区),消息存放到缓冲区也就转交给了应用程序。


1.4.5 断开阶段:收发数据结束

close 程序组件实现。

客户端和服务器哪一方先执行 close 都有可能。当浏览器调用 read 执行接收数据操作时,read 会告知浏览器收发数据操作已结束,连接已经断开。浏览器得知后,也会调用 close 进入断开阶段。

在HTTP协议中,如果一个网页有3张图片,则需要4次请求,也就需要4次重复的执行以上过程,效率很低,因此在 HTTP 版本 1.1 中可以在一次连接中收发多个请求和响应,所有数据都请求完成后,浏览器会主动触发断开连接的操作。


本章测试

1.http://www.nikkeibp.co.jp/ 中的 http 代表什么意思?

答案:HTTP协议

2. 下面两个网址有什么不同?

  •  a. http://www.nikkeibp.co.jp/sample
  •  b. http://www.nikkeibp.co.jp/sample/

答案:a中的sample代表文件名,b中的sample代表目录名,b会访问这个目录下已经设置好的默认文件。

3. 用来识别连接在互联网上的计算机和服务器的地址叫什么?

答案:IP。

4. 根据 Web 服务器的域名来查询 IP 地址时所使用的服务器叫什么?

答案:DNS服务器,

5. 向 DNS 服务器发送请求消息的程序叫什么?

答案:解析器。


本章完。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值