![ddd8a5f7a273908ea8ceba1539757c61.png](https://i-blog.csdnimg.cn/blog_migrate/fce18a4f948bef5bf72392f489309c15.jpeg)
在计算机网络的编程中,OSI参考模型中规定了各层的定义与功能。针对于其中的网络层,传输层,以及应用层这三层,整体称之为网络协议栈,常见有PC平台的TCP/IP,嵌入式平台的lwIP,CycloneTCP等。
关于数据链路层和物理层,这是硬件层面的协议,由网卡和MAC/LLC去实现。
本文中的TCP server 和 client,为基于软件层面(TCP/IP协议栈)的Socket应用开发。
1 Socket
套接字(socket)是一个抽象层,应用程序可以通过它发送或接收数据,可对其进行像对文件一样的打开、读写和关闭等操作。套接字允许应用程序将I/O插入到网络中,并与网络中的其他应用程序进行通信。网络套接字是IP地址与端口的组合。
数据结构:注意sockaddr_in 和 sockaddr的区别(前者具体,后者抽象)
#ifdef CONFIG_NET_IPv6
函数接口:
int
2 TCP 与 UDP
TCP(Transmission Control