美文网首页
网络知识二:委托操作系统内部的协议栈发送消息

网络知识二:委托操作系统内部的协议栈发送消息

作者: 爱学习的代代 | 来源:发表于2020-07-04 21:29 被阅读0次
    一、套接字是什么?

    当我们知道IP地址后,就可以委托操作系统中的协议栈想这个目标IP发送消息了,委托发送给Web服务器的HTTP消息是一种数字信息,收发数字信息不仅限于浏览器,对其他使用网络的应用程序也是如此。

    向操作系统内的协议栈发出委托时,需要按照指定的顺序来调用Socket库中的程序组件。

    经常会在招聘网站上看到Socket编程、熟悉Socket通信。


    image.png 数据收发.png

    收发数据的两台计算机之间建立一个数据通道,将数据从一端被送入管道,当数据到达管道的另一端然后被取出。在数据收发操作的时候,我们需要先建立这条管道才行,建立管道的关键在于管道两端的数据出入口,这些出入口,被称为套接字

    • 创建套接字
    • 套接字连接起来,形成管道。

    操作系统的协议栈数据收发操作步骤:

    1. 客户端创建套接字(创建套接字阶段)
    2. 将管道连接到服务器端的套接字上(连接阶段)
    3. 收发数据(数据发送阶段)
    4. 断开管道并删除套接字(断开阶段)

    说明: 管道的连接一般由客户端发起,但是断开时可以由客户端或者服务器任意一方发起,其中一方断开后,另一方也会随之断开。当管道断开时,套接字也会被删除。

    2、创建套接字、连接、通信、断开

    调用Socket库中的socket程序组件来创建套接字。比如我们打开两个游览器窗口分别去访问qq和百度,就需要创建两个不同的套接字。即同一台计算机可能会同时存在多个套接字,所以需要一种方法来识别,这种方法就是描述符。 是不是跟我们的编程中的变量名和常量名很像。

    1、准备
    描述符 = socket(<使用IPv4>, <流模式>,....);
    
    2、连接
    connect(<描述符>, <服务器的IP地址和端口号>,....);
    
    3、发送
    write(<描述符>,<发送数据>,<发送数据长度>);
    
    [服务器] <接收数据长度> = read(<描述符>,<接收缓冲区>, .....);
    
    4、断开
    close(<描述符>);
    
    

    说明: 连接阶段中,当同时指定IP地址和端口号时就可以明确识别出某台具体计算机上的某个具体的套接字。
    描述符是用来在在一台计算机内部识别套接字的机制。端口号是用来让通信的另一方能够识别出套接字的机制。

    服务器的端口号是根据应用的种类事先定义好的:Web是80端口,电子邮件是25端口

    3、HTTP1.1支持一次连接中收发多个请求与相应。

    如果一个一个网页中包含很多张图片,就必须重复进行很多次连接、收发数据、断开的操作。对于同一台服务器来说重复连接和断开显然是效率是很低的。HTTP版本1.1就可以支持一次连接中收发多个请求与相应的方法,当所有请求完成后,浏览器就主动触发断开操作。

    相关文章

      网友评论

          本文标题:网络知识二:委托操作系统内部的协议栈发送消息

          本文链接:https://www.haomeiwen.com/subject/lizlqktx.html