TCP和UDP协议
共同点:
同为传输层协议
不同点:
TCP:有连接,可靠
UDP:无连接,不保证可靠
有连接:正式数据传输之前确保双方都能够收和发
无连接:直接传输数据,不管是否能收和发
可靠:即数据无误、数据无丢失、数据无失序、数据无重复到达的通信
不保证可靠:有可能会丢失、会出错、会失序或者重复到达
TCP有连接:
三次握手:(没有数据传输)
第一次握手:客户端给服务器发送连接请求(客户端能发)
第二次握手:服务器给客户端应答同时给客户端发送连接请求(服务器能收,服务器能发)
第三次握手:客户端给服务器应答(客户端能收)
四次挥手:(有数据传输)
第一次挥手:客户端向服务器发送断开连接请求(客户端不发了)
第二次挥手:服务器应答(服务器不收了)
第三次挥手:服务器向客户端发送断开连接请求(服务器不发了)
第四次挥手:客户端应答(客户端不收了)
适用场合:
Tcp适合于对传输质量要求较高,以及传输大量数据的通信,比如登录、文件的传输等
Udp适合于对传输速度要求较高,以及小尺寸数据的通信,比如视频会议等
Socket是一个连接应用层和传输层(用户空间和内核空间)的网络编程的接口,在linux中,也是一个特殊的文件,通过文件IO进行访问,位于应用层和传输层之间,有三种类型。
1.Ip地址
同一个网络内区分不同的主机
2.端口号
同一个主机区分不同的网络相关的进程
3.字节序
大端序:高地址存放低字节,低地址存放高字节
小端序:高地址存放高字节,低地址存放低字节
大小端由cpu决定
网络字节序:大端
A主机发送数据前:先将本地字节序转换成网络字节序
B主机收到数据后:将网络字节序转换成本地字节序
4.Udp服务器和客户端的实现
Udp:无连接(也就是说只要创建好了套接字绑定了地址信息之后就可以收发消息了)
服务器:
- 创建套接字
- 绑定地址信息
- 接收消息 recvfrom
- 关闭套接字
客户端:
- 创建套接字
- 发消息 sendto
- 关闭套接字