<网络编程>网络套接字
目录
理解源IP地址和目的IP地址
认识端口号
端口号和进程ID的关系
理解源端口号和目的端口号
初步认识TCP、UDP协议
TCP协议
UDP协议
网络字节序列
socket网络接口
socket常见API
sockaddr结构
UDPsocket
编码:
理解源IP地址和目的IP地址
源IP:发出消息的主机
目的IP:源主机指定的接收消息的主机
认识端口号
端口号:传输层协议的一个内容,用来标识一个进程(唯一性),用端口号来交付数据。
IP地址(公网IP, IPV4 32位),IP地址早已经不够了,采用将网络划分为局域网IP和公网IP,IP在特定的网络中保证主机唯一性。
我们通信的目的是将数据传输到对方机器上面的软件客户端 -> 客户端进程, 服务器软件 -> 服务器进程。真正的网络通信过程,本质其实是进程间通信!,将数据在主机间转发仅仅是手段,机器收到之后,需要将数据交付给指定的进程!!
端口号和进程ID的关系
一个进程可以绑定多个端口号,但是一个端口号不能被多个进程绑定。
理解源端口号和目的端口号
发数据的事源端口,收到数据的是目的端口。
网络中:IP地址+端口号 = 套接字,所有我们一般在网络编程称之为套接字编程。
初步认识TCP、UDP协议
TCP协议
传输层协议、有连接、可靠传输、面向字节流
有连接:事先告知
可靠传输:为了保证可靠,就会设计更多的策略,保证不丢包
UDP协议
传输层协议、无连接、不可靠传输、面向数据报
无连接:随时可能发数据,没有事先告知
不可靠传输:只负责把数据给下层,其他的不管,丢包就丢包咯
网络字节序列
不同的机器数据存放可能有大小端之分,为了避免这些差异,网络有了如下规定:
网络规定,所有的数据,都必须是大端!
socket网络接口
socket常见API
常见的套接字:
1.域间soket :本地通信方案,类似管道,会了网络socket就会了
2.原始socket : 通常编写工具,可以绕过其他层编写
3.网络socket :
理论上是三种应用场景,对应的应该是三套接口!,但是Linux中,不想设计过多的接口!所以就将所有的接口进行统一了!
sockaddr结构
sockaddr_in :网络通信
sockaddr_un: 本地通信
sockaddr: 前16位地址,判断是网络/本地通信。
UDPsocket
云服务器无法绑定公网IP,也不建议;
对于服务器来说,也不推荐绑定一个确定的的IP,推荐绑定任意IP的方案;
编码:
udp · d29c7f7 · 绅士.永/Linux_learn_1 - Gitee.com