1.七层网络模型
七层网络模型简称OSI模型,供一个使各种不同的计算机和网络在世界范围内实现互联的标准框架。
7.应用层:例如HTTP、SMTP、SNMP、FTP、Telnet、SIP、SSH、NFS、RTSP、XMPP、Whois、ENRP
6.表示层:例如XDR、ASN.1、SMB、AFP、NCP
5.会话层:例如ASAP、TLS、SSH、ISO 8327 / CCITT X.225、RPC、NetBIOS、ASP、Winsock、BSD sockets
4.传输层:例如TCP、UDP、RTP、SCTP、SPX、ATP、IL
3.网络层:例如IP、ICMP、IGMP、IPX、BGP、OSPF、RIP、IGRP、EIGRP、ARP、RARP、 X.25
2.数据链路层:例如以太网、令牌环、HDLC、帧中继、ISDN、ATM、IEEE 802.11、FDDI、PPP
1.物理层:例如线路、无线电、光纤、信鸽
七层模型是理想模型,很少会完整的用到七层
2.TCP三次握手和四次挥手
在这里形象的讲述一下tcp三次握手过程,比如说你打电话给你朋友
第一次握手:你打电话给朋友,试图拨通它的电话(连接请求过程)
第二次握手:你的朋友看到你打电话过来,接听,并跟你说了声喂~(请求确认过程)
第三次握手:收到你的朋友的喂~,你也跟他说了喂,表示你们之间可以开始沟通(确认连接),这时tcp数据可以传输。
专业描述是这样的:
第一次握手:建立连接时,客户端发送SYN包(syn=j)到服务器,并进入SYN_SENT状态,等待服务器确认;
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态。
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。
在这里形象的讲述一下tcp四次握手过程,比如说你和一个重仪式感且工作繁忙的朋友告别
第一次挥手:你说:“我来你这里玩了几天很开心,不过我现在就要回家啦”
第二次挥手:你忙碌的朋友说:“好,我正在忙,你等我一下”
第三次挥手:他说:“这是给你的纪念礼物,拿好,拜拜啦,下次见”
第四次挥手:你说:“好,那下次玩,再见啦”。正式挥手告别
专业描述看上图
为什么连接的时候是三次握手,关闭的时候却是四次握手?
因为服务器有可能还在跟其他的数据进行通信,来不及回复客户端,但是也不能让客户端久等,所以当第一次收到FIN=1时,会告诉客户端我已经收到了,但是我还有其他数据要处理(也就是第二次握手),其他数据处理完后会跟客户端说:我现在准备正式跟你断开消息了(第三次握手),客户端收到服务器准备断开的消息后,最后进行第四次握手最终断开。
如果已经建立了连接,但是客户端突然出现故障了怎么办?
客户端如果出现故障,服务器不能一直等下去,白白浪费资源。服务器每收到一次客户端的请求后都会重新复位这个计时器,时间通常是设置为2小时,若两小时还没有收到客户端的任何数据,服务器就会发送一个探测报文段,以后每隔75秒钟发送一次。若一连发送10个探测报文仍然没反应,服务器就认为客户端出了故障,接着就关闭连接。
3.TCP和UDP的区别
TCP是面向连接的,用途一般用做控制,三次握手,跟打电话一样,需要确认连接。优点是连接可靠的;缺点是可传输数据量不大。
UDP是面向报文的,用途是大数据量传输,没有三次握手,跟发短信一样,A跟B发短信,不管B是否收的到,我数据都发给你了。优点是可传输数据大,缺点是连接是不可靠的。
4.socket,tcp,http三者之间的区别
TCP、UDP是负责数据的传输的,实现数据传输有TCP就够了,他们可以实现数据的收发,但是无法解析数据,就像说不同语言的人进行沟通,能听到但听不懂,这时候就需要http
而HTTP可以理解成一个协议,它负责让双方说的话对方都能听懂,它是建立在TCP/IP之上的一种应用层协议
而socket可以理解为是TCP的一种封装形式,socket本身不是一种协议,而是一个调用接口,为了让我们更方便的使用TCP、IP协议