早期的网络是基于OSI(开放式系统互联网,一般叫OSI参考模型)模型,该模型是由ISO国际标准组织制定的,包含了七层(应用层、表示层、会话层、传输层、网络层、数据链路层、物理层),即复杂又不实用,以至于招到了许多批评,所以,当时就有一批技术人员为了方便开发,提高效率,自己开发了一套新的协议,TCP/IP协议,在简化的计算机网络OSI模型中,她完成了第四层传输层所指定的功能
TCP/IP协议(Transmission Control Protocol),翻译过来是传输控制协议,是一种面向连接的、可靠的、基于字节流的传输层通信协议。包含有四层(应用层、传输层、网际层、网络接口层),不过从实质来讲,TCP/IP协议只有最上面的三层,因为最下面的网络接口层基本上和一般的通信链路的功能上没多大差别
应用层:负责处理特定的应用程序细节。包含各种应用程序协议,如:Telnet远程登录、FTP文件传输协议、SMTP简单邮件传送协议、SNMP简单网络管理协议
传输层:为网络提供了流量控制,错误控制和确认服务。在TCP/IP协议族里面,又包含两个互不相同的传输协议:TCP和UDP,后面会讲解
网际层:提供独立于硬件的逻辑寻址,实现物理地址与逻辑地址的转换,网际层(也叫网络层)协议包括IP协议、ICMP协议以及OGMP协议( Internet 组管理协议)
网络接口层:通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡,它们一起处理与电缆或其他人护额传输媒介的物理接口细节,对应的设备有,传输介质、网卡、交换机
TCP和UDP是两种最为著名的传输层协议,二者都使用IP作为网络层协议尽管TCP和UDP都使用相同的网络层(IP),TCP却向应用层提供与UDP完全不同的服务
TCP,传输控制协议,面向连接的协议,可靠的字节流服务。面向连接意味着两个使用TCP的应用(通常是一个客户和一个服务器)在彼此交换数据之前必须建立一个TCP连接
只支持一对一传输(端对端的传输)
数据大小无限制
建立连接通道
速度慢,但是可靠性高
用户数据报协议,是OSI参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,UDP提供了无连接通信,适合于一次传输少量数据,UDP报文没有可靠性保证、顺序保证和流量控制字段等,可靠性较差。但是正因为UDP协议的控制选项较少,在数据传输过程中延迟小、数据传输效率高,适合对可靠性要求不高的应用程序,或者可以保障可靠性的应用程序,如DNS、TFTP、SNMP
特点:
应用:
一般应用于QQ、微信等即时聊天上
这个是前端面试中,最经常考的,所以呢,这个我们得重点掌握才行。
在了解三次握手和四次挥手之前,我们得先了解tcp头部数据的宏观位置和首部报文格式,方便我们后面理解
一行有32个bit即32位,1个字节=8个位,即一行有4个字节
第一次握手:第一次握手是有客户端发起的,客户端向服务端发送一个报文,在报文里面SYN标志位为1,seq携带一位32位的序列号,当服务端收到这个报文之后,就在知道客户端是想要和我建立一个新的连接
第二次握手:第二次握手是由服务端发起的,服务端在收到客户端在第一次握手时发的报文之后,确定客户端是想和自己建立连接后,,于是服务端就向客户端发送了一个确认消息包,在这个包里面,SYN标志位和ACK标志位都为1,并携带32位的确认序号
以上两次握手后,对于客户端而言,已经明确了客户端既能给服务端发小心,也能收到服务端的响应。但是对服务端而言,两次握手是不够的,到目前为止,服务端只知道一件事情,客户端发给我的消息我能收到,但是客户端能不能收到我的消息我是不知道的,所以,还需要进行第三次握手
第三次握手:第三次握手就是当客户端收到服务端发送的响应报文之后,还要继续去给服务端进行回应,在报文里面携带一个32位的确认序号。
通过以上三次握手之后,不管是客户端还是服务端,都知道,我既能给对方发送消息,也能收到对方的响应,那么这个连接就被安全的创建了
第一次挥手:第一次挥手也是由客户端发起的,客户端会发送一个报文,报文里面FIN标志位为1,表示关闭连接,当服务端收到这个报文之后,就知道客户端想要和我断开连接了
第二次挥手:第二次报文是由服务端发起的,当服务端收到客户端的报文之后,服务端辞职可能还有未发送完的报文消息,需要继续发送,所以此时客户端只能告诉客户端,我知道你要和我断开连接啦,但是我还没准备好,需要等我一下等我好了之后我会通知你的(此时的报文消息里面包含32位确认序号ack和确认标志ACK=1)
第三次挥手:此时的服务端已经准备好了,于是就告诉客户端,我可以断开连接啦,在这条消息报文里面FIN=1,并携带32位的ack确认序号
第四次挥手:当客户端收到服务端的断开连接的报文后,客户端同样需要继续发送一个确认包的报文给服务端。
通过这四次的相互沟通和连接,不断时客户端还是服务端,都已经做好了断开的准备