网络协议是为计算机网络中的数据交换而建立的一系列协议,只有遵循网络协议,才可以在网络中访问资源。
互联网中有上百种协议,但最重要的协议就是TCP协议和IP协议,因此我们将这上百种协议统称为TCP/IP协议族。
TCP/IP协议在一定程度上参考了OSI的体系结构,OSI模型共有七层
其中应用层,表示层和会话层提供的服务相差不大,因此在TCP/IP协议中被统称为应用层,数据链路层和物理层被统称为网络接口层。
应用层协议主要有TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet等,是距离用户最近的协议,这些协议主要是用来规范各种数据格式,因为通过传输层传递过来的数据是字节流格式,不是很好被程序识别而且操作性差,因此需要通过协议来处理字节流数据,将其转换为各种所需的数据格式。
传输层协议主要有TCP(Transmission Control Protocol),UDP(User Datagram Protocol)协议,应用层的数据想要进行传输需要先通过传输层。其中UDP是面向无连接的,速度快,但是不安全,数据可能会丢失,不区分客户端与服务端。适用于网络电话,在线视频会议这种要求实时性高的场景。
TCP协议是可靠的,面向连接的,数据安全,速度相对UDP略低,区分客户端和移动端。TCP协议连接和断开是通过三次握手和四次挥手实现的。
三次握手:
三次握手就是客户端与服务端进行通信的时候有三次交流
第一次握手:是客户端让服务器准备好资源。客户端发送 SYN(SEQ=x)报文给服务器端,进入 SYN_SEND 状态。
第二次握手:服务端资源准备好了并且服务端问客户端资源有没有准备好。服务器端收到SYN报文,回应一个SYN(SEQ=y)ACK(ACK=x+1)报文,进入SYN_RECV 状态。
第三次握手:客户端资源也准备好了。客户端收到服务器端的SYN报文,回应一个ACK(ACK=y+1)报文,进入Established 状态。
三次握手完成之后TCP客户端与服务端也就成功建立了连接,就可以开始传输数据了。数据传输中每传递一次消息,服务端都会告诉客户端收到消息了,这样确保数据不会丢失,因此我们说TCP是可靠地面向连接(连接一直连着)的传输协议。
四次挥手:
四次挥手就是客户端与服务端断开通信的时候有四次挥手
第一次挥手:客户端告诉服务端我不会给你发数据了
第二次挥手:服务端告诉客户端我收 到你发生的信息了。
第三次挥手:服务端给客户端发生数据说我也不给你发了。
第四次挥手:客户端给服务端说我知道了。
(1) 某个应用进程首先调用 close,称该端执行“主动关闭”(active close)。 该端的 TCP 于是发送一个 FIN 分节,表示数据发送完毕。
(2) 接收到这个 FIN 的对端执行 “被动关闭”(passive close),这个 FIN 由 TCP 确认。 注意:FIN 的接收也作为一个文件结束符(end-of-file)传递给接收端应用进 程,放在已排队等候该应用进程接收的任何其他数据之后,因为,FIN 的接收意 味着接收端应用进程在相应连接上再无额外数据可接收。
(3) 一段时间后,接收到这个文件结束符的应用进程将调用 close 关闭它的套接 字。这导致它的 TCP 也发送一个 FIN。
(4) 接收这个最终FIN的原发送端TCP(即执行主动关闭的那一端)确认这个FIN。
网络层的协议主要有IP,ICMP,OSPF,EIGRP,IGMP等,网络层的主要工作是定义网络地址、区分网段、子网内MAC寻址、对于不同子网的数据包进行路由。
网络接口层的协议主要有SLIP,CSLIP,PPP,MTU等,网络接口层的主要工作就是对电信号进行分组并形成具有特定意义的数据帧,然后以广播的形式通过物理介质发送给接收方。