当前位置: 代码迷 >> 综合 >> 计算机网络读书笔记 DAY2(1)
  详细解决方案

计算机网络读书笔记 DAY2(1)

热度:14   发布时间:2023-12-01 11:31:48.0

第一章最后一节:1.4委托协议栈发送消息

        当我们从DNS服务器拿到完整的ip地址了之后,所有发送数据都已经准备完毕:ip地址,浏览器更具http协议解析后的信息,web服务器的端口号,剩下就是发送信息和接受信息了,但是与服务器连接的操作是浏览器无法做到的,需要委托操作系统中的协议栈去解决。而委托给协议栈的过程就是本节主要内容

概念:

端口号:

        每台计算机都有着自己的ip地址,当两个服务器和客户端需要发送通信时只有ip地址时不行的,他只是帮助我们找到对方的计算机在哪,而计算机内部的程序是无法通过ip地址找到的。好比以前的座机电话(我小的时候家里就有),当别人打电话来的时候,一般都是我在家,可是大人们一般有事怎么会找我呢,所以一般就会问:你爸爸在哪呢,可以让他接电话吗?如果把打通了我家住址的座机电话当作的通过ip找到计算机,那么询问我父亲在哪就是通过端口号找到对应的应用程序。

协议栈:

        第二章会讲,现在理解为真正进行网络通信的程序。

套接字:

        客户端与服务端通信的入口,双向的,既是入口,也是出口。

收发数据四步操作:

        1.创建套接字(创建套接字阶段)

        2.将通信管道连接到服务器端的套接字上(连接阶段)

        3.收发数据(通信阶段)

        4.断开通道并删除套接字(断开阶段)

如何知道服务器应用程序的端口号:

        服务器端口号是更具类型提前定义好的(IANA干的),全球统一的。比如web服务器的是80,电子邮件的是25

服务器怎么知道客户端应用的端口号:

        客户端在创建套接字的时候,协议栈会为这个套接字随机分配一个端口号。接下来,当协议栈执行连接操作时,会将这个随便分配的端口号通知给服务器。

过程:

创建套接字阶段:

        使用socket创建套接字,返回套接字相关信息对象。这个对象用于识别自身套接字。

连接阶段:

        应用程序调用socket库中的connect方法,传入三个参数:ip地址,端口号,创建套接字的返回值。传入创建套接字时的返回值的作用是告知协议栈使用哪一个套接字去和服务器端的套接字进行连接。ip和端口号是绑定对应计算机的应用坐标的,有了这个坐标就能知道连接目标的哪个套接字。

通信阶段:

        应用程序调用socket库中的write方法,首先应用根据用户输入的网址转换成HTTP请求消息,然后通过write将该消息通过协议栈发送,此外光有消息还不行吧,就算连接上了,那哪条管道也不是实在的呀。但是连接上了之后套接字那就会存有对方的信息,write通过对方信息就能把消息发送到指定位置。接下来服务器拿到了之后,返回答复。

断开阶段:

        根据HTTP协议是web服务器在响应完成后先断开,然后客户端接收到了对方断开信息之后客户端的套接字也会断开。接下来浏览器使用socket方法从协议栈读取信息了之后,read会告知浏览器收发操作结束。连接已断开,最后浏览器得知后调用close方法进入断开阶段