网络编程 总结一

一、网络基础:

概念:1> 网络编程的本质就是进程间的通信,只不过进程分布在不同的主机上

           2>在跨主机传输过程中,需要确定通信协议后,才可以通信

1.  OSI体系结构(重点)

定义7层模型:

 2. TCP协议     

 1)网络接口与物理层 

 3. IP地址划分

 4.点分十进制

 5.子网掩码

 TCP与UDP的端口号是相互独立的

二、跨主机传输

 1. 子节序(重点

字节序是计算机存储多字节整数序列的方式:

1>小端字节序:低序字节存储在地地址上

2>大端字节序:高序字节存储在地地址上

3>计算机的内存读取:都是从低地址往高地址读取的,然后通过大小端转换得出读取到的结果

4>char单字节,float double浮点类型,字符串以上均没有字节序的说法

 验证大小端存储?

#include<stdio.h>

union node
{
	unsigned int a;
	char b;
}

int main(int argc, const char *argv[])
{
	unsigned int a=0x87654321;
	char *ptr=(char*)&a;
	if(0x21==*ptr)
	{
		printf("小端n");
	}
	else if(0x87==*ptr)
	{
		printf("大端n");
	}

2. 本地字节序与网络字节序

本地字节序:主机字节序;网络字节序:规定使用大端字节序

在跨主机传输过程中,需要使用同一的字节序,即网络字节序,避免兼容性问题

3. 字节序转换函数

htons   htonl  主机字节序--->网络字节序

ntohs  ntohl  网络字节序--->主机字节序

4.结构体对齐

编译器会对结构体进行对齐,加速CPU取值周期,由于数据对齐也是与操作系统相关,不同的主机如果使用不同的对齐方式,会导致数据无法解析;所以网络传输结构体的时候需要取消结构体对齐

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>