进程件通信——网络通信——TCP
网络抓包工具:wireshark 抓取经过设备网卡的数据。
操作:
1. sudo wireshark
2. 选择要抓取的网卡----》any
3. 设置抓取的过滤条件
4. 进行网络通信
5. 分析数据
UDP: 用户数据报协议
UDP: 用户数据报协议
特点:
1. 无连接
2. 面向数据包
3. 不确保数据的安全可靠性
4. 可以实现一对一,一对多通信
5. 头部开销小
应用: 要求数据安全可靠的场景下
HTTP、FTP、MQTT
TCP : 传输控制协议
特点:
1. 有连接
2. 面向字节流(流式套接字)
3. 安全可靠的传输协议
1.三次握手、四次挥手机制
2.应答机制....等一系列机制
4. 只能实现一对一通信
5. 头部开销大,机制复杂
三次握手:tcp为了确保通信双方都已准备就绪,在建立连接时,要进行三次握手操作。
由客户端主动发起。
四次挥手:tcp为了确保断开连接时,通信双发都收发数据结束,在断开连接时,进行四次挥手。
由任意一方发起
int listen(int sockfd, int backlog);
功能:负责监听需要建立连接的客户端
参数:
sockfd:
backlog:允许同时监听的客户端的个数
返回值:
成功:0
失败:-1
int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
功能:接收完成三次握手的客户端
参数:
sockfd:监听套接字
addr:建立连接的客户端地址
addrlen:客户端地址大小的指针
返回值:
成功:通讯套接字
失败:-1
ssize_t recv(int sockfd, void *buf, size_t len, int flags);
功能:
返回值:
成功:实际收到字节数
失败:-1
对方断开连接:不再阻塞, 返回0
TCP报文头
滑动窗口大小:是TCP流量控制得一个手段。目的是告诉对方, 本端得TCP接受缓冲区还能容纳多少字节得数据,这样对方就可以控制发送数据的速度,从而达到流量控制,16bit,因而窗口最大65535.
源端口与目的端口各占2个字节,
序列号与确认序列号各占4个字节;
数据便宜+标志位、窗口、检验和、紧急指针各占2个字节
选项与填充长度可变