【网络编程基础知识】
网络编程发展史

OSI模型

TCP/IP协议族体系结构

TCP/IP与OSI对比

TCP协议

IP/端口/MAC地址

IP地址相当于一栋楼地址(具体设备),端口相当于这个栋楼的一个具体房号。
物理层与MAC地址
物理层

MAC层

物理层与MAC层的协作

MAC地址

网络层与IP协议
常用网络层协议

协议详解与协作关系



IP数据包结构



网络层与IP协议
IP地址解析(以IPV4为例)
点分十进制形式:192.168.1.1
二进制视角:32位二进制数,分为4个8位组(如11000000.10101000.00000001.00000001 →192.168.1.1)
主机号:1
网络号:192.168.1.0
IPV4地址分类

C类为例
192.168.80.10
网络号:192.186.80.0 广播地址:192.168.80.255 网关;192.168.80.1
私有地址

子网掩码


IPV6

路由

传输层与端口
传输层与端口


传输层协议与端口的协作

传输层协议与端口的关联

应用层与架构模式
应用层

架构模式

套接字与字节序
套接字

网络字节序与主机字节序




如何获取当前平台是大端序还是小端序?
#include <stdio.h>int main(int argc, const char *argv[]){int m = 0x12345678;char *p = (char *)&m;if (0x78 == *p){printf("host\n");}else if(0x12 == *p){printf("net\n");}return 0;
}大小端转换:
#include <stdio.h>
#include <arpa/inet.h>int main(int argc, const char *argv[]){unsigned int src = 0x12345678;unsigned int dest = htonl(src);printf("%#x -> %#x \n",src,dest);return 0;
}ip地址转换:
#include <stdio.h>int main(int agrc, char *argv[]){unsigned int num = 0x12345678;char *p = (char*)#printf("%x \n",p[0]);return 0;
}
