基于Linux的网络编程总结 | C++
网络编程
一、Internet网络协议
1.TCP/IP协议
- 主流协议族
- 分层、多协议的通信系统
1.1 数据链路层
网卡接口的网络驱动程序,处理数据再物理媒介上的传输;不同的物理网络具有不同的电气特性,网络驱动程序隐藏实现细节,为上层协议提供一致的接口
数据链路层常用协议:地址解析协议(ARP)和反向地址解析协议(RARP),实现IP地址与机器物理地址(通常为MAC地址)之间的相互转换
1.2 网络层
实现数据包的路由和转发
常用协议:IP、ICMP
ip协议:跳发送模式;根据数据包的目的地IP地址决定数据如何发送;如果数据包不能直接发送至目的地,IP协议负责寻找一个合适的下一跳路由器,并将数据包交付给该路由器转发
ICMP协议:英特网的控制报文协议,用于检测网络连接
1.3 传输层
为两台主机的应用程序提供端到端通信
传输层使用的主要协议:TCP、UDP
- TCP:传输控制协议,为应用层提供可靠的、面向连接的、基于流的可靠服务;使用超时重发、数据确认等方式确保数据被正确发送至目的地
- UDP:用户数据报协议,为应用层提供不可靠的、无连接的、基于数据服务报的服务;不保证数据能正确发送
1.4 应用层
应用程序逻辑实现
常用协议:ping、telnet、DNS、HTTP、FTP、DHCP等
2.HTTP协议
超文本传输协议:应用层协议
2.1 主要特点
- 支持客户/服务器模式
- 简单快速:客户向服务器请求服务时,只需传送请求方法和路径;请求方法常用GET、HEAD、POST等,每种方法规定了客户与服务器联系的不同类型;HTTP协议简单,服务器规模小,通信速度较快
- 灵活:HTTP允许传输任意类型的数据对象;正在传输的类型由Content-Type加以标记
- 无连接:无连接是指每次连接只处理一个请求;服务器处理完客户请求,并收到客户应答后,即断开连接,节省传输时间。
- 无状态:无状态是指协议对于十五处理没有记忆能力;应答较快,但传输数据量较大
2.2 HTTP请求
2.3 HTTP响应
2.4 HTTP状态码
二、套接字
1.套接字的基本概念
1.1 通信类型:控制套接字如何传输和处理数据,数据包的形式传输
- 连接类型:确保所有包依序传输,如果丢包,则请求重传
- 数据报类型:不保证包的到达顺序,包可能丢失
1.2 名空间:指定套接字地址格式
本地名空间:套接字地址为普通文件名
Internet名空间:套接字地址由Internet地址和端口号(用于区分一台主机上的多个套接字)确定
1.3 协议:确定数据如何传输(机器会自动选择)