Linux C网络编程

85 阅读3分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第12天

TCP/IP协议栈参考模型

image.png

主机到网络层协议

 本层主要为IP 协议ARP 协议( 地址解析协议)提供服务、发送和接收网络数据报。

IPV4\IPV6

image.png

IP协议

 IP协议是TCP/IP协议中最重要的协议,它为TCP、UDP、ICMP等协议提供传输的通路。IP层的主要目的是提供子网的互联,形成较大的网络,使不同的子网之间能传输数据。IP层主要有如下作用:

image.png  数据传送

 寻址

 路由选择:TTL(Time To Live)表示数据报文最多可以经过的路由器的数量。

 数据报文的分段

image.png

网际控制报文协议(ICMP)

ICMP协议用于传递差错信息、时间、回显、网络信息等报文控制数据。

 ICMP协议的数据位于IP字段的数据部分,它是在IP报文的内部被传输的。

image.png

image.png

传输控制协议(TCP)

 传输控制协议(Transmission Control Protocol),简称TCP协议,它在原有IP协议的基础上,增加了确认重发、滑动窗口和复用/解复用等机制,提供一种可靠的、面向连接的字节流服务。

1.TCP的特点

2.TCP的数据格式

3.建立连接的三次握手

image.png 4.释放连接的四次握手过程

5.TCP的封装解封过程

用户数据报文协议(UDP)

 UDP是一种基于IP协议的不可靠网络传输协议。

 1.UDP的数据格式

image.png 2.UDP数据的传输过程

主机字节序和网络字节序

 字节序的问题是由于CPU对整数在内存中的存放方式造成的。多于一个字节的数据类型在内存中的存放顺序叫主机字节序。最常见的字节序有两种,小端字节序和大端字节序。

 小端字节序(Intel x86架构)(低存低,高存高)(主机)

将数据的最低字节放在内存的起始位置,与思维习惯一致,与实际习惯不一致

低地址  存放 数据的低字节

高地址  存放 数据的高字节

 大端字节序(UNIX  PowPC低存高,高存低)(网络)

将数据的高字节放在内存的起始位置,与实际习惯一致

高地址  存放 数据的低字节

低地址  存放 数据的高字节

 

网络字节序标准是大端字节序

进行网络字节序转换的函数:

htons():host主机 to net网络对于short类型的变量

即对于short类型的变量从主机字节序向网络字节序转换

htonl():host主机 to net网络对于long类型的变量

即对于long类型的变量从主机字节序向网络字节序转换

       ntohs():net网络to host主机对于short类型的变量

即对于short类型的变量从网络字节序向主机字节序转换

ntohl():net网络to host主机 对于long类型的变量

即对于long类型的变量从网络字节序向主机字节序转换