之前我们讲解了TCP,和IP这两部分的内容其实还是很多的,我们只是讲了一部分跟我们开发服务器相关的一部分内容,他还有很多的细节。
我们主要形成个概念:就是我们的IP是无连接的不可靠的,但是TCP是形成于IP无连接和不可靠的基础上所形成的的可靠的有链接的一种形式。
今天我们讲的是socket的API,虽然我们最终服务器开发是调用封装好的,但是我们还是要做一定的了解,socket这个名词之前我已经进行过介绍了。
https://blog.csdn.net/Hanani_Jia/article/details/81458555
我们讲的API就是伯克利socket API,我们先来了解一下这一套API的历史。Berkeley sockets,也称为BSD Socket伯克利套接字的应用编程接口(API)是采用C语言的进程间通信的库,经常用在计算机网络间的通信。 BSD Socket的应用编程接口已经是网络套接字的事实上的抽象标准。大多数其他程序语言使用一种相似的编程接口。
BSD Socket作为一种API,允许不同主机或者同一个计算机上的不同进程之间的通信。它支持多种I/O设备和驱动,但是具体的实现是依赖操作系统的。这种接口对于TCP/IP是必不可少的,所以是互联网的基础技术之一。它最初是由加州伯克利大学为Unix系统开发出来的。所有现代的操作系统都都实现了伯克利套接字接口,因为它已经是连接互联网的标准接口了。这是对伯克利套接字的一个简单的介绍,大家有些了解就可以。
之后是对头文件的介绍,这个API和我们正常编写程序是一样的,很多函数已经在库中被封装好了,我们直接使用头文件中的库就可以了。
这里最主要的就是system下的socket.h这个头文件,这个头文件中定义了整套API的函数和数据结构的定义,之后我们会很详细的讲。之后在netinet/in.h中定义了IPV4和IPV6相关协议的信息类似一些宏定义一些define,还有arpa/inet.h这里主要是处理数字从操作系统字节序到网络的字节序,我们之前讲过我们网络之间用的是大端传输,而我们操作系统种可能是大端系统也可能是小端系统,如果我们的操作系统是大端他什么操作都不做会直接进行传输,但是如果我们的操作系统是小端的,他会将我们的信息转换成网络的大端再去进行传输。
我们现在对这些API进行一个粗略的介绍。
之前我们讲解了TCP,和IP这两部分的内容其实还是很多的,我们只是讲了一部分跟我们开发服务器相