《UNIX网络编程 卷1:套接字联网API(第3版)》——1.8 BSD网络支持历史

简介: 源自Berkeley的最终版本是1994年的4.4BSD-Lite和1995年的4.4BSD-Lite2。我们指出这两个版本是其他多个系统(包括BSD/OS、FreeBSD、NetBSD和OpenBSD)的基础,这些系统大多数仍然处于活跃的开发和完善之中。

本节书摘来自异步社区《UNIX网络编程 卷1:套接字联网API(第3版)》一书中的第1章,第1.8节,作者:【美】W. Richard Stevens , Bill Fenner , Andrew M. Rudoff著,更多章节内容可以访问云栖社区“异步社区”公众号查看

1.8 BSD网络支持历史

套接字API起源于1983年发行的4.2BSD操作系统。图1-15展示了各种BSD发行版本的发展史,并注明了TCP/IP的主要发展历程。1990年面世的4.3BSD Reno发行版本随着OSI协议进入BSD内核而对套接字API做了少量的改动。
screenshot

图1-15中从4.2BSD往下到4.4BSD的通路展示了源自Berkeley计算机系统研究组(Computer Systems Research Group,CSRG)的各个版本,它们要求获取者已拥有Unix的源代码许可权。然而其中的所有网络支持代码,不论是内核支持(如TCP/IP协议栈、Unix域协议栈及套接字API)还是应用程序(如Telnet和FTP客户和服务器程序)都是独立于源自AT&T的Unix代码开发的。因此从1989年起,Berkeley开始提供第一个BSD网络支持版本,它包含所有的网络支持代码以及不受Unix源代码许可权约束的其他各种BSD系统软件。这些包含网络支持代码的版本是可公开获取的,最终因特网上任何人都可通过匿名FTP获取。

源自Berkeley的最终版本是1994年的4.4BSD-Lite和1995年的4.4BSD-Lite2。我们指出这两个版本是其他多个系统(包括BSD/OS、FreeBSD、NetBSD和OpenBSD)的基础,这些系统大多数仍然处于活跃的开发和完善之中。有关各种BSD版本和各种Unix系统历史的详情参见[Mckusick et al.1996]的第1章。

许多Unix系统从某个版本的BSD网络支持代码(包括套接字API)开始提供网络支持,我们称这些实现为源自Berkeley的实现(Berkeley-derived implementation)。许多商业版本的Unix是基于System V版本4(System V Release 4,SVR4)的,其中有一些系统使用源自Berkeley的网络支持代码(如UnixWare 2.x),其他SVR4系统的网络支持代码却是独立起源的(如Solaris 2.x)。我们还要注意,Linux这种流行的可免费获得的Unix实现并不适合归属源自Berkeley的系列,因为它的网络支持代码和套接字API都是从头开始开发的。

相关文章
|
29天前
|
存储 网络协议 Ubuntu
【C++网络编程】Socket基础:网络通讯程序入门级教程
【C++网络编程】Socket基础:网络通讯程序入门级教程
55 7
|
29天前
|
Python
Python网络编程基础(Socket编程) 使用try-except处理网络错误
【4月更文挑战第11天】在网络编程中,错误处理和异常管理是非常重要的部分。网络操作经常因为各种原因而失败,比如网络断开、服务器无响应、地址不正确等。因此,学会如何使用Python的异常处理机制来捕获和处理这些错误,是编写健壮的网络应用的关键。
|
2月前
|
弹性计算 负载均衡 网络协议
这种情况可能是由于阿里云的API服务出现了短暂的故障或者网络波动导致的
【2月更文挑战第20天】这种情况可能是由于阿里云的API服务出现了短暂的故障或者网络波动导致的
73 1
|
2月前
|
网络协议 Go 开发者
Go语言网络编程基础:构建高效、可靠的网络应用
【2月更文挑战第12天】本文将深入探讨Go语言在网络编程领域的基础知识,包括其强大的并发模型、网络库的使用、TCP/IP和HTTP协议的理解等。通过本文,读者将能够理解Go语言在网络编程中的优势,并掌握构建高效、可靠网络应用的核心技能。
|
3月前
|
分布式计算 API Linux
通义千问API:找出两篇文章的不同
本章我们将介绍如何利用大模型开发一个文档比对小工具,我们将用这个工具来给互联网上两篇内容相近但版本不同的文档找找茬,并且我们提供了一种批处理文档比对的方案
|
3天前
|
网络协议 Java Linux
【探索Linux】P.29(网络编程套接字 —— 简单的TCP网络程序模拟实现)
【探索Linux】P.29(网络编程套接字 —— 简单的TCP网络程序模拟实现)
10 0
|
3天前
|
存储 网络协议 算法
【探索Linux】P.28(网络编程套接字 —— 简单的UDP网络程序模拟实现)
【探索Linux】P.28(网络编程套接字 —— 简单的UDP网络程序模拟实现)
9 0
|
11天前
|
网络协议 JavaScript 前端开发
Node.js的网络编程:深入TCP/UDP网络编程
【4月更文挑战第29天】本文介绍了如何在Node.js中进行TCP和UDP网络编程。使用net模块,可以创建TCP服务器和客户端,实现可靠的数据传输。例如,通过`net.createServer()`创建服务器,监听数据、关闭和错误事件。客户端使用`net.createConnection()`连接服务器并通信。另一方面,dgram模块用于UDP编程,创建UDP套接字并绑定端口,通过`server.send()`发送和接收数据报。TCP提供连接和数据可靠性,适合需要顺序和完整性的场景,而UDP更轻量级,适用于实时性要求高的应用。Node.js的网络编程能力使其成为开发高效网络应用的理想选择。
|
1月前
|
网络协议 安全 Java
Java网络编程实战:构建高效稳定的网络通信
【4月更文挑战第2天】Java网络编程涉及Socket编程,基于TCP(可靠,面向连接)和UDP(不可靠,无连接)协议。Socket类和ServerSocket类用于TCP,而DatagramSocket和DatagramPacket处理UDP。高效通信涉及线程管理、选择合适的IO模型(如NIO)、利用缓冲区及确保网络安全,如使用SSL/TLS。适用于Web服务器、文件传输等场景。
Java网络编程实战:构建高效稳定的网络通信
|
2月前
|
域名解析 缓存 网络协议
探索Qt 网络编程:网络地址与服务类全解析
探索Qt 网络编程:网络地址与服务类全解析
59 0