TCP/IP协议栈模型分析

1. 标准TCP/IP协议是用于计算机通信的一组协议,通常被称为TCP/IP协议栈,以它为基础组建的互联网是目前国际上规模最大的计算机网络。正因为互联网的广泛应用,使得TCP/IP成为了事实上的网络标准。

       TCP/IP四层模型是基于OSI七层模型简化后的模型,虽然OSI模型更加精细、分工更加明确,但响应的是OSI更难实现,所以出现了TCP/IP模型,虽然现在技术上可以实现OSI模型但由于TCP/IP的使用太广更换模型的难度较大。

2. OSI七层模型与TCP/IP协议栈模型对应关系

TCP/IP协议栈模型分析

3. 各个层对应协议有哪些?

应用层 = FTP、HTTP、SNMP、TFTP、DNS、Telnet

传输层 = TCP、UDP

网络层 = IP、ICMP、RIP、OSPF、BGP、ICMP

链路层 = SLIP、CSLIP、PPP、ARP、RARP、MTU、

4. TCP/UDP协议的区别及应用场景?

区别:

(1)面向连接VS无连接

TCP建立一个连接需要3次握手IP数据包,断开连接需要4次握手。另外断开连接时发起方可能进入TIME_WAIT状态长达数分钟(视系统设置,windows一般为120秒),在此状态下连接(端口)无法被释放。UDP不需要建立连接,可以直接发起。

(2)可靠VS不可靠

TCP利用握手、ACK和重传机制,udp没有。

校验和(校验数据是否损坏);

定时器(分组丢失则重传);

序列号(用于检测丢失的分组和重复的分组);

确认应答ACK(接收方告知发送方正确接收分组以及期望的下一个分组);

否定确认(接收方通知发送方未被正确接收的分组);

面向报文

(3)面向报文的传输方式是应用层交给UDP多长的报文,UDP就照样发送,即一次发送一个报文。因此,应用程序必须选择合适大小的报文。若报文太长,则IP层需要分片。UDP对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。这也就是说,应用层交给UDP多长的报文,UDP就照样发送,即一次发送一个报文。(一个upd的最大报文长度2^16-1-20-8,20是ip报文头,8是udp报文头)

(4)面向字节流
面向字节流的话,虽然应用程序和TCP的交互是一次一个数据块(大小不等),但TCP把应用程序看成是一连串的无结构的字节流。TCP有一个缓冲,当应用程序传送的数据块太长,TCP就可以把它划分短一些再传送。如果应用程序一次只发送一个字节,TCP也可以等待积累有足够多的字节后再构成报文段发送出去。

应用场景:

(1)TCP应用场景:

效率要求相对低,但对准确性要求相对高的场景。因为传输中需要对数据确认、重发、排序等操作,相比之下效率没有UDP高。举几个例子:文件传输(准确高要求高、但是速度可以相对慢)、接受邮件、远程登录。

(2)UDP应用场景:

效率要求相对高,对准确性要求相对低的场景。举几个例子:QQ聊天、在线视频、网络语音电话(即时通讯,速度要求高,但是出现偶尔断续不是太大问题,并且此处完全不可以使用重发机制)、广播通信(广播、多播)。

5.  TCP/UDP协议簇都包含哪些协议?

应用协议:HTTP、SMTP、FTP、SELNET、SNMP、TFTP

传输协议:TCP、UDP

网际协议:IP、ICMP、ARP

路由控制协议:RIP、OSPF、BGP

6. 知名协议所对应的端口号?

SSH = 22 

RDP = 3389

SMB = 445

MySQL = 3306

SQLServer = 1433

Oracle = 1521

FTP = 21

MongoDB = 27017

Memcached = 11211

PostgreSQL = 5432

Telnet = 23

SMTP = 25

SMTP_SSL = 465

POP3 = 110

POP3_SSL =995

IMAP = 143

IMAP_SSL = 993

VNC = 5900

Redis = 6379

TCP/IP协议栈模型分析

上一篇:Linux编程获取本机IP地址


下一篇:Socket 编程基础