从输入 址开始讲起 – 全局一览

络的全貌

  • 知道IP地址过后就可以委托操作系统内部的协议栈向这个目标IP也就是我们需要访问的web服务器发送消息了。要发送给 Web 服务 器的 HTTP 消息是一种数字信息(digital data),因此也可以说是委托协议 栈来发送数字信息。向操作系统内部的协议栈发出委托时,需要按照指定的顺序来调 用 Socket 库中的程序组件。

  • 收发数据的操作大概分为下面的几个阶段:
    (1)创建套接字(创建套接字阶段)
    (2)将管道连接到服务器端的套接字上(连接阶段)
    (3)收发数据(通信阶段)
    (4)断开管道并删除套接字(断开阶段)
    这几个操作都是操作系统中的协议栈来执行的,浏览器等应用程序并不会自己去做连接管道放入数据这些工作,而是委托协议栈来完成的。

    从输入 址开始讲起 - 全局一览
    接下来具体的来看看上面的四部操作:
    1. 创建套接字(创建套接字阶段):客户端创建套接字的操作非常简单,只要调 用 Socket 库中的socket程序组件 就可以了,调用 socket 之后,控制流程会转移到 socket 内部并执行创建套接字的操作,完成之后控制流程又会被移交回应用程序。套接字创建完成后,协议栈会返回一个描述符,应用程序会将收到的描述符存放在内存中。描述符是用来识别不同的套接字的。当创建套接字后,我们就可以使用这个套接字来执行收发数据的操作了。这时,只要我们出示描述符,协议栈就能够判断出我们希望用哪一个套接字来连接或者收发数据了。(应用程序是通过“描述符”这一类似 码牌的东西来识别套接字的。
    2. 将管道连接到服务器端的套接字上(连接阶段):我们需要委托协议栈将客户端创建的套接字与服务器那边的套接字连接起来,应用程序通过调用Socket库中的名为connect的程序组件来完成这一操作。这里的要点是当调用connect时,需要指定描述符、服务器IP地址和端口 这3个参数,描述符和IP地址的作用大概说过了,端口存在的意义在于需要通过端口 来确定连接对象的套接字。
    • 描述符:应用程序用来识别套接字的机制,
    • IP地址和端口 :客户端和服务器之间用来识别对方套接字的机制
    1. 收发数据(通信阶段): 当套接字连接起来之后, 只要将数据送入套接字,数据就会被发送到对方的套接字中。当然,应用程序无法直接控制套 接字,因此还是要通过 Socket 库委托协议栈来完成这个操作。这个操作需 要使用 write 这个程序组件
    2. 断开管道并删除套接字(断开阶段):当浏览器收到数据之后,收发数据的过程就结束了。接下来,我们需 要调用 Socket 库的 close 程序组件进入断开阶段。最终,连接 在套接字之间的管道会被断开,套接字本身也会被删除。

    声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

    上一篇 2019年8月6日
    下一篇 2019年8月6日

    相关推荐