读书笔记:《深入理解计算机系统》 之 第十一章 网络编程

第一次作业:简述网络编程

第二次作业:简述套接字相关内容

现实生活中,我们基本都已经离不开网络应用。

每个网络应用都是基于客户端-服务器模型的。简单的来说就是客户端向服务器发起请求,然后服务器向客户端返回相应内容。

对此,有一道非常经典的面试题,当你在浏览器输入一个网址时,发生了什么?

因特网就是最成功的互联网络的实现。每个因特网主机都运行实现TCP/IP协议的软件,因特网的客户端和服务器混合使用套接字接口和Unix I/O函数进行通信,通常将套接字函数实现为系统调用,这些系统调用会陷入内核,并调用各种内核模式的TCP/IP函数。

最初的因特网协议使用32位IP地址,称为IPv4,后来又出现了了IPv6,最近就有一个新闻,全世界的Ipv4已经被分配完了。

套接字接口是一组函数,它们和Unix I/O函数结合起来,用以创建网络应用。

从Linux内核的角度来看,一个套接字就是通信的一个端点。从Linux程序的角度来看,套接字就是一个有相应描述符的打开文件。

客户端和服务器使用socket函数来创建一个套接字描述符。

客户端通过调用connect函数来建立和服务器的连接。

剩下的套接字函数,bind,listen和accept,服务器用它们来和客户端建立连接。

除此之外,Linux还提供了一些强大函数(getaddrinfo和getnameinfo)实现二进制套接字地址结构和主机名,主机地址,服务名和端口号的字符串之间的相互转化。当和套接字接口一起使用时,这些函数能使我们编写独立于任何特定版本的IP协议的网路程序。

发布了41 篇原创文章 · 获赞 15 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/ScanQ/article/details/103657040