基于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请求

基于Linux的网络编程总结 | C++

2.3 HTTP响应

基于Linux的网络编程总结 | C++

2.4 HTTP状态码

基于Linux的网络编程总结 | C++

二、套接字

1.套接字的基本概念

1.1 通信类型:控制套接字如何传输和处理数据,数据包的形式传输

  • 连接类型:确保所有包依序传输,如果丢包,则请求重传
  • 数据报类型:不保证包的到达顺序,包可能丢失

1.2 名空间:指定套接字地址格式

本地名空间:套接字地址为普通文件名

Internet名空间:套接字地址由Internet地址和端口号(用于区分一台主机上的多个套接字)确定

1.3 协议:确定数据如何传输(机器会自动选择)

2.套接字函数:“sys/socket.h”

基于Linux的网络编程总结 | C++

基于Linux的网络编程总结 | C++

基于Linux的网络编程总结 | C++
基于Linux的网络编程总结 | C++
基于Linux的网络编程总结 | C++