前言:这个第一章讲过从客户端和服务器通信首先要创建套接字。
一、协议栈
1、协议栈。这个在后面经常提到,一定要好好理解一下。 它是在操作系统中的网络控制软件,不可以和Socket库混为一谈,下面图中有解释。
2、协议栈的内部结构。
借此对TCP/IP的七层结构好好理解下。从上层至下层来委派工作。
这么看,Socket库和协议栈还不再同一层上。
该图非常重要,对于理解这么抽象的信息传递非常的有帮助!!!恍然大悟,本书最大的一个亮点就是图画得特别清晰,把非常抽象的东西画出来,基本上就理解了一半了。O(∩_∩)O哈哈~
解析:
TCP协议和UDP协议。都是用来收发信息的协议,他们会接收应用程序的委托进行收发数据的操作。 区别:浏览器,邮件等一般应用程序首发数据用TCP协议。DNS查询等收发较短的操作用UDP协议。
网络包。网络中的数据会被切分成几十字节到几千字节的小块,每一小块数据被称为一个包。
IDMP和ARP。ICMP用于告知网络包传送过程中产生的错误一级各种控制信息;ARP用于根据IP地址查询相应的以太网MAC地址。
二、套接字
1、理解:直接说套接字的定义对于理解套接字没多大意义,要想理解好它,就必须和协议栈结合起来理解。 在协议栈内部有一块用于存放控制信息的内存空间,这里记录了用于控制通信操作的控制信息,例如通信对象的IP地址,端口号,通信操作的进行状态等。本来套接字只是一个概念而已,并不存在实体,如果一定要赋予它一个实体,我们可以说这些控制信息就是套接字的实体,或者说 存放控制信息的内存空间就是套接字的实体。
2、作用:套接字中记录了用户控制通信操作的给各种控制信息,协议栈则需要根据这些信息判断下一步的行动,这就是套接字的作用。
3、win系统下。在cmd命令框中输入netstat就可以查看,至于具体的理解可以到书中查阅,不再赘述。
三、创建套接字
怎么创建的?前面已经学习了,是浏览器程序调用了socket程序来创建的。错错错!!!
过程:
①应用程序调用socket申请创建套接字,协议栈根据应用程序的申请执行创建套接字的操作。(注意了:套接字是协议栈创建的,不是应用程序创建的!!!)
②协议栈分配用于存放套接字的内存空间。这段内存空间原先是没有的,需要协议栈向操作系统进行申请。
题外话:何为内存管理模块?
计算机内部会同事运行过个程序,如果每个程序都擅自使用内存空间的话,就有可能发生多个程序重复使用同一个内存区域导致数据损坏的问题。为了避免出现这种问题,操作系统中有一个“内存管理”模块,它相当于内存的管理员,负责根据程序中的申请分配相应的内存空间,并确保这些内存空间不会被其他程序使用。因此,分配内存的操作就是像内存管理模块提出申请,请他划分出一块内存空间出来。
网友评论