socket技术
1.什么是socket技术。
在计算机通信领域,socket 被翻译为“套接字”,它是计算机之间进行通信的一种约定或一种方式。通过 socket 这种约定,一台计算机可以接收其他计算机的数据,也可以向其他计算机发送数据
2.socket技术支持两种协议
2.1 tcp协议:
一种面向连接的、可靠的、基于字节流的通信协议,数据在传输前要建立连接,传输完毕后还要断开连接,客户端在收发数据前要使用 connect() 函数和服务器建立连接。建立连接的目的是保证IP地址、端口、物理链路等正确无误,为数据的传输开辟通道。
TCP建立连接时要传输三个数据包,俗称三次握手,比如以下场景:1
2
3A: hello,明天有没有空,我们出去xx玩吧
B: 好啊,好啊
A: ok,明天老地方见
syn(建立连接) ,ack(确认标记),fin(终止标记)
第一次握手:客户端向服务器端发送代码 syn=1随机产生一个随机数SEQ=X , 发送到服务器端;
第二次握手:服务器端确认收到syn和x,回复给客户端ack=x+1和SEQ=Y发送给客户端。
第三次握手:客户端接收到syn,ack,y值后向服务器发送ack=y+1,此包发送完后就可以开始连接。
第一次挥手:主动关闭方发送一个FIN,用来关闭主动方到被动关闭方的数据传送,也就是主动关闭方告诉被动关闭方:我已经不会再给你发数据了(当 然,在fin包之前发送出去的数据,如果没有收到对应的ack确认报文,主动关闭方依然会重发这些数据),但此时主动关闭方还可以接受数据。
第二次挥手:被动关闭方收到FIN包后,发送一个ACK给对方,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号)。
第三次挥手:被动关闭方发送一个FIN,用来关闭被动关闭方到主动关闭方的数据传送,也就是告诉主动关闭方,我的数据也发送完了,不会再给你发数据了。
第四次挥手:主动关闭方收到FIN后,发送一个ACK给被动关闭方,确认序号为收到序号+1,至此,完成四次挥手。
2.2 udp协议:
UDP 是一个简单地面向数据报的运输层协议:进程的每个输出操作都正好产生一个 UDP 数据报,并组装成一份待发送的 IP 数据报。UDP 不提供可靠性,它把应用程序传给 IP 层的数据发送出去,但是并不保证他们能到达目的地。
http协议:
http是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。
http 1.0:属于短连接,客户端和服务端通信完成后直接断开。
http 1.1:属于长连接(Connection:keepalive),默认情况在空闲300s后自动断开
补充:
osi七层网络模型
OSI模型分为七层,自下而上为 物理层(Physical Layer)、数据链路层(Data Link Layer)、网络层(Network Layer)、传输层(Transport Layer)、会话层(Session Layer)、表达层(Presentation Layer)、应用层(Application Layer)。