OSI/RM模型与网络协议
众所周知,为了使不同计算机厂家生产的计算机能够相互通信,以便在更大的范围内建立计算机网络,国际标准化组织(ISO)在1978年提出了“开放系统互联参考模型”,即著名的OSI/RM模型(Open System Interconnection/Reference Model)。
它将计算机网络体系结构的通信协议划分为七层,自下而上依次为:
- 物理层(Physics Layer)
- 数据链路层(Data Link Layer)
- 网络层(Network Layer)
- 传输层(Transport Layer)
- 会话层(Session Layer)
- 表示层(Presentation Layer)
- 应用层(Application Layer)
其中:
-
物理层:以太网 · 调制解调器 · 电力线通信(PLC) · SONET/SDH · G.709 · 光导纤维 · 同轴电缆 · 双绞线等
-
数据链路层:Wi-Fi(IEEE 802.11) · WiMAX(IEEE 802.16) ·ATM · DTM · 令牌环 · 以太网 ·FDDI · 帧中继 · GPRS · EVDO ·HSPA · HDLC · PPP · L2TP ·PPTP · ISDN·STP · CSMA/CD等
-
网络层协议:IP (IPv4 · IPv6) · ICMP· ICMPv6·IGMP ·IS-IS · IPsec · ARP · RARP · RIP等
-
应用层协议:DHCP ·DNS · FTP · Gopher · HTTP· IMAP4 · IRC · NNTP · XMPP ·POP3 · SIP · SMTP ·SNMP · SSH ·TELNET · RPC · RTCP · RTP ·RTSP· SDP · SOAP · GTP · STUN · NTP· SSDP · BGP 等
TCP/IP(Transport Control Protocol/Internet Protocol)
为了实现不同网络之间的互连,美国国防部于1977年到1979年间制定了TCP/IP体系结构和协议。
TCP/IP是由一组具有专业用途的多个子协议组合而成的。
这些子协议包括:
- TCP
- IP
- UDP
- ARP
- ICMP
TCP
TCP的优点:
- 可靠,稳定 TCP的可靠体现在TCP在传递数据之前,会有三次握手来建立连接,而且在数据传递时,有确认、窗口、重传、拥塞控制机制,在数据传完后,还会断开连接用来节约系统资源。
TCP的缺点:
- 因为每次握手和挥手都要4次,所以传输慢,效率低,占用系统资源高
- 每次建立连接保持时间短
- 易被攻击 -- 因为TCP有确认机制、三次握手机制,这些也导致TCP容易被人利用,实现DOS、DDOS、CC等攻击
由于TCP在传递数据之前,需要走一系列的复杂流程
- 先建连接,三次握手(实际是四次)-- 这一步就很费时了
- 在数据传递时,确认机制、重传机制、拥塞控制机制等都会消耗大量的时间
- 要在每台设备上维护所有的传输连接,事实上,每个连接都会占用系统的CPU、内存等硬件资源。
UDP
UDP用户数据包协议 是User Datagram Protocol的简称,是OSI(Open System Interconnection,开放式系统互联) 参考模型中一种无连接的传输层协议。
UDP协议与TCP协议一样用于处理数据包,在OSI模型中,两者都位于传输层,处于IP协议的上一层。
UDP的优点:
- 快
- 比TCP稍安全
- UDP没有TCP的握手、确认、窗口、重传、拥塞控制等机制
- UDP是一个无状态的传输协议,所以它在传递数据时非常快。没有TCP的这些机制,UDP较TCP被攻击者利用的漏洞就要少一些。
UDP的缺点:
- 数据传输不可靠,不稳定 因为UDP没有TCP那些可靠的机制,在数据传递时,如果网络质量不好,就会很容易丢包。
许多应用只支持UDP,如:多媒体数据流,不产生任何额外的数据,即使知道有破坏的包也不进行重发。当强调传输性能而不是传输的完整性时,如:音频和多媒体应用,UDP是最好的选择。在数据传输时间很短,以至于此前的连接过程成为整个流量主体的情况下,UDP也是一个好的选择。
TCP与UDP的区别
UDP协议与TCP协议相同点:
-
都属于传输层, 同属TCP/IP的子协议
-
都用于处理数据包
UDP协议与TCP协议不同点: -
基于连接与无连接(发送数据之前不需要建立连接)
-
TCP要求系统资源较多,UDP较少
-
UDP程序结构较简单
-
流模式(TCP)与数据报模式(UDP)
-
TCP保证数据正确性,UDP可能丢包
-
TCP保证数据顺序,UDP不保证
-
有状态和无状态
应用场景
什么时候应该使用TCP?
当对网络通讯质量且数据准确度有要求的时候,比如:整个数据要准确无误的传递给对方,这往往用于一些要求可靠的应用,比如HTTP、HTTPS、FTP等传输文件的协议,POP、SMTP等邮件传输的协议。
在日常生活中,常见使用TCP协议的应用如下:
- 浏览器 用的HTTP
- FlashFXP 用的FTP
- Outlook 用的POP、SMTP
- Putty 用的Telnet、SSH QQ文件传输 ,这时就可以使用UDP。 比如,日常生活中,常见使用UDP协议的应用如下:
什么时候应该使用UDP?
当对网络通讯质量要求不高的时候,要求网络通讯速度能尽量的快(实时传输)
- QQ语音
- QQ视频
- TFTP
- 网络游戏
- 网络直播