1.套接字:数据链路层、网络层、传输层协议是在内核中实现,因此操作系统需要实现一组系统调用,使得应用程序能够访问这些协议提供的服务。目前主要实现这组系统调用的API时socket。套接字具备从网络中发送收取数据的功能。
2.
3.传输层的协议主要有两个:TCP协议和UDP协议。TCP协议是面向连接的、可靠的、流式服务。而UDP协议是无连接不可靠的数据报服务。
4.TCP和UCD所使用的套接字也是不同的。TCP所使用的流式套接字在定义套接字时选择的套接字类型是SOCKET_STREAM,而UDP协议中所使用的数据包套接字选择的是SOCKET_DGRAM.
5.TCP流式套接字编程的过程:
(1)服务器端:①socket():创建套接字,指定使用TCP进行通信。(之后还有定义一个socket地址结构体进行初始化以及绑定IP和端口号)
②bind():将创建的套接字与本地地址绑定
③listen():监听客户端的连接请求
④当有客户端连接请求到达,accept()接收连接请求新建连接套接字
⑤recv():/send():数据收发
⑥close():关闭套接字
(2)服务器端:①socket():创建套接字,指定使用TCP进行通信。(之后还有定义一个socket地址结构体进行初始化以及绑定IP和端口号)
②connect():连接服务器端
③send()/recv():发送接收数据
④close():关闭套接字
6.UDP数据报套接字编程过程:
(1)服务器端:①socket():创建套接字,指定使用UDP进行通信。(之后定义一个socket地址结构体进行初始化)
②bind():将创建的套接字与本地地址绑定
③当有客户端连接时sendto()/recvfrom()发送或者接收数据
④关闭套接字
(2)客户端:①socket():创建套接字,指定使用UDP进行通信。(之后定义一个socket地址结构体进行初始化,初始化指定需要连接的服务器端地址)
③sendto()/recvfrom()发送或者接收数据
④关闭套接字