目录
1. TCP/IP协议简介
1.1 TCP/IP协议栈概述
TCP/IP协议栈是互联网协议系列,也称为TCP/IP协议族,它是一组网络通信协议的集合;
TCP/IP协议栈分为4层,从下到上分别是网络接口层、网络层、传输层和应用层。其中,网络接口层负责接收和发送物理帧,网络层负责IP地址的寻址和路由选择,传输层负责提供可靠的传输服务,应用层则负责处理特定的应用程序细节;
TCP/IP协议栈的设计具有灵活性和可扩展性,可以适应不同网络环境和应用需求的变化而变化。
1.2 TCP与UDP协议对比
TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,它提供了数据确认、重传、流量控制等机制,保证了数据传输的可靠性和顺序性
UDP(User Datagram Protocol,用户数据报协议)则是一种无连接的、不可靠的传输层通信协议,它不提供数据确认和重传机制,也不保证数据传输的顺序性,但具有更高的传输效率和实时性。
TCP和UDP的选择取决于具体的应用场景和需求,例如对于需要可靠传输的文件传输等应用,通常选择TCP协议;而对于实时性要求较高的音视频传输等应用,则可能选择UDP协议。
1.3 网络通信基本概念
(1)IP地址
用于唯一标识网络中的一个节点(主机或路由器等),它由网络号和主机号组成,通常采用点分十进制表示法。
(2)端口号
用于标识主机上的一个应用程序或服务,它是一个16位的整数,范围从0到65535。
(3)套接字
是网络通信的基本单元,用于实现不同主机间的通信。在TCP/IP协议中,套接字通常由一个IP地址和一个端口号组成。
1.4 客户端-服务器架构
客户端-服务器架构是一种常见的网络通信架构,其中客户端负责发起请求并接收响应,而服务器则负责处理请求并返回响应;
在TCP/IP协议中,客户端和服务器之间通过建立套接字连接来实现通信。客户端向服务器发送请求时,需要指定服务器的IP地址和端口号;服务器在接收到请求后,会处理请求并返回响应给客户端;
客户端-服务器架构具有可扩展性和易维护性等优点,可以方便地实现分布式系统和网络服务等功能。
2. C语言网络编程基础
2.1 套接字编程概念及原理
(1)套接字(socket)定义
套接字是一种独立于协议的网络编程接口,用于实现不同主机上的应用进程间双向通信;
(2)套接字工作原理
通过创建套接字、绑定地址与端口、监听连接、接受请求与发送数据等步骤实现网络通信;
(3)套接字通信流程
包括服务器端和客户端的套接字创建、连接、数据交换和关闭等操作。
2.2 套接字类型与地址结构
(1)套接字类型
包括流式套接字(SOCK_STREAM)、数据报套接字(SOCK_DGRAM)和原始套接字(SOCK_RAW)等;
(2)套接字地址结构
IPv4地址使用`sockaddr_in`结构,包含地址族、IP地址和端口号等信息;IPv6地址使用`sockaddr_in6`结构;
(3)地址转换函数
用于将主机名转换为IP地址,以及将服务名转换为端口号等
2.3 常用网络函数库介绍
(1)BSD Socket API
提供了一组丰富的网络编程函数,包括套接字创建、地址绑定、监听与连接、数据发送与接收等;
(2)Windows Sockets API(Winsock.h)
在Windows平台上进行网络编程的接口,与BSD Socket API类似但有一些差异;
(3)跨平台网络库
如libevent、Boost.Asio等,提供了跨平台的网络编程解决方案