第一部分 TCP/IP简介
第二章
- 套接字对(socket pair):定义连接的两个端点的四元组:本地IP、本地TCP端口、外地IP、外地TCP端口。Socket pair唯一标识一个网络上的每个TCP连接。其中,标识每个端点的两个值(IP地址和端口号)通常称为一个套接字(Socket)。 Notice:即使UDP是无连接的,但提到套接字时依然是指本地IP地址和本地端口号。
- 2.10节的“TCP端口号与并发服务器”讲的是真的棒,通过一个实例讲清楚了服务器的监听机制。
①服务器套接字对
图中的(* : 21, * : *)是服务器的套接字对(socket pair),第一个套接字指服务器在任意本地IP的端口21上等待连接。第二个套接字IP和端口号都没有指定,说明我们接受任意的套接字连接,我们称之为监听套接字(listening socket)。
当多个client连接服务器时,关系图如下:
图中的文字将连接逻辑讲的非常清楚,不再赘述。 - 常见因特网应用的协议使用情况:
其中,ping和traceroute使用ICMP实现网络诊断。traceroute自行构造UDP分组来发送并读取所引发的ICMP应答。 - UDP是简单、不可靠、无连接的协议;TCP是复杂、可靠、面向连接的协议。SCTP组合了这两个协议的一些特性,并提供了TCP不具备的额外特性。尽管绝大多数应用(Web、Telnet、FTP和电子邮件)使用TCP,但这3个协议对传输层都是必要的。
- TCP三次握手:
第二部分 基本套接字编程
第3章 套接字编程简介
- 网络协议必须制定一个网络字节序,举例来说,每个TCP分节中都有16位的端口号和32位的IPv4地址,发送协议栈和接受协议栈必须就这些多字节字段各个字节的传送顺序达成一致。网络协议使用大端字节序来传送这些多字节整数。
- 两组地址转换函数:
首先,地址转换是IP地址在**点分十进制数串(一个字符串,例如IPv4的“192.168.1.230”)和网络字节序(大端)二进制值之间转换。
会有两组是因为一组仅支持IPv4,另一组支持IPv4和IPv6。
(1) ipv4适用的三个函数:
(2)ipv4和ipv6都适用的两个函数:inet_pton、inet_ntop。
函数名中p代表表达(presentation)、n代表数值(numeric)。表达格式是ASCII字符串,数值格式是二进制值。
第4章 基本TCP套接字编程
- TCP client与server进程之间发生的一些典型事件的时间表。
- 会涉及并发服务器,它是在同时有大量的客户连接到同一服务器上时用于提供并发性的一种Unix技术。有两种模型,分别是每客户单进程模型与每客户单线程模型。比如前者的话,在每个客户连接时都迫使服务器为它派生(fork)一个新的进程。
- 关键函数1:socket()