Linux TCP vs UDP 网络编程
网络模型:
ISO(理论)7 VS TCP/IP(实际)4
应用层 -> 应用层 http/ftp/ssh
表示层
会话层
传输层 -> 传输层 TCP/UDP
网络层 -> 网际层 路由器(IP)IPCM/ARP
链路层 -> 数据链路层 网卡/交换机
物理层 网线/集线器
TCP(Transmission Control Protocol,传输控制协议):
是面向连接的协议,在正式收发数据前,必须和对方建立可靠的连接。使一台计算机发出的字节流无差错地发往网络上的其他计算机,对可靠性要求高的数据通信系统往往使用TCP协议传输数据。
TCP三次握手过程
- 1 主机A通过向主机B 发送一个含有同步序列号的标志位的数据段给主机B ,向主机B 请求建立连接,通过这个数据段,
主机A告诉主机B 两件事:我想要和你通信;你可以用哪个序列号作为起始数据段来回应我. - 2 主机B 收到主机A的请求后,用一个带有确认应答(ACK)和同步序列号(SYN)标志位的数据段响应主机A,也告诉主机A两件事:
我已经收到你的请求了,你可以传输数据了;你要用哪个序列号作为起始数据段来回应我 - 3 主机A收到这个数据段后,再发送一个确认应答,确认已收到主机B 的数据段:”我已收到回复,我现在要开始传输实际数据了
这样3次握手就完成了,主机A和主机B 就可以传输数据了.
3次握手的特点
没有应用层的数据
SYN这个标志位只有在TCP建产连接时才会被置1
握手完成后SYN标志位被置0
Linux使用tcp 网络编程:
客户端 | 服务器 |
---|---|
socket | socket |
- | bind |
- | listen |
connect | accept |
write/read | read/write |