2.1 协议栈和套接字 - 创建套接字(重点)

前言:这个第一章讲过从客户端和服务器通信首先要创建套接字。

一、协议栈

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申请创建套接字,协议栈根据应用程序的申请执行创建套接字的操作。(注意了:套接字是协议栈创建的,不是应用程序创建的!!!)

②协议栈分配用于存放套接字的内存空间。这段内存空间原先是没有的,需要协议栈向操作系统进行申请。

题外话:何为内存管理模块?

计算机内部会同事运行过个程序,如果每个程序都擅自使用内存空间的话,就有可能发生多个程序重复使用同一个内存区域导致数据损坏的问题。为了避免出现这种问题,操作系统中有一个“内存管理”模块,它相当于内存的管理员,负责根据程序中的申请分配相应的内存空间,并确保这些内存空间不会被其他程序使用。因此,分配内存的操作就是像内存管理模块提出申请,请他划分出一块内存空间出来。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,159评论 1 32
  • 1.ios高性能编程 (1).内层 最小的内层平均值和峰值(2).耗电量 高效的算法和数据结构(3).初始化时...
    欧辰_OSR阅读 29,671评论 8 265
  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,386评论 11 349
  • ———————————————回答好下面的足够了---------------------------------...
    恒爱DE问候阅读 1,767评论 0 4
  • 我离奶酪有三英尺远。 三英尺啊, 大概是 零点九米, 二点七四尺, 和正好一码的距离。 我迈了一步, 就什么也看不到了。
    波洛涅斯阅读 311评论 0 0