回顾一下计算机网络知识中的TCP/IP

2024-09-13 23:10:07 浏览数 (1)

一、首先谈一谈计算机网络模型

1.1 OSI七层模型

七层模型,亦称OSI(Open System Interconnection)。参考模型是国际标准化组织(ISO)制定的一个用于计算机或通信系统间互联的标准体系,一般称为OSI参考模型或七层模型。

它是一个七层的、抽象的模型体,不仅包括一系列抽象的术语或概念,也包括具体的协议。

下面这张如可以解释每一层及作用:

1.2 TCP/IP四层模型

TCP/IP参考模型是计算机网络的祖父ARPANET和其后继的因特网使用的参考模型。ARPANET是由美国国防部DoD赞助的研究网络。逐渐地它通过租用的电话线连结了数百所大学和政府部门。当无线网络和卫星出现以后,现有的协议在和它们相连的时候出现了问题,所以需要一种新的参考体系结构。这个体系结构在它的两个主要协议出现以后,被称为TCP/IP参考模型。

TCP/IP是一组用于实现网络互连的通信协议。Internet网络体系结构以TCP/IP为核心。基于TCP/IP的参考模型将协议分成四个层次,它们分别是:网络访问层、网际互联层、传输层、和应用层。

1.3 两者的关系

共同点

(1)OSI参考模型和TCP/IP参考模型都采用了层次结构的概念。

(2)都能够提供面向连接和无连接两种通信服务机制。

不同点

(1)OSI采用的七层模型,而TCP/IP是四层结构。

(2)TCP/IP参考模型的网络接口层实际上并没有真正的定义,只是一些概念性的描述。而OSI参考模型不仅分了两层,而且每一层的功能都很详尽。

(3)OSI模型是在协议开发前设计的,具有通用性。TCP/IP是先有协议集然后建立模型,不适用于非TCP/IP网络。

(4)TCP/IP参考模型的传输层是建立在网络互联层基础之上的,而网络互联层只提供无连接的网络服务,所以面向连接的功能完全在TCP协议中实现,当然TCP/IP的传输层还提供无连接的服务,如UDP;相反OSI参考模型的传输层是建立在网络层基础之上的,网络层既提供面向连接的服务,又提供无连接的服务,但传输层只提供面向连接的服务。

(5)OSI参考模型的抽象能力高,适合与描述各种网络;而TCP/IP是先有了协议,才制定TCP/IP模型的。

(6)OSI参考模型的概念划分清晰,但过于复杂;而TCP/IP参考模型在服务、接口和协议的 区别上不清楚,功能描述和实现细节混在一起。

(7)TCP/IP参考模型的网络接口层并不是真正的一层;OSI参考模型的缺点是层次过多,划分意义不大但增加了复杂性。

二、常见面试题

2.1 TCP和UDP的区别

常见:

(1)TCP面向连接,UDP面向无连接

(2)TCP可靠,UDP不可靠

(3)TCP开销大、UDP开销小

(4)......

不常见:

(1)TCP只支持一对一传输,而UDP支持一对一、一对多、多对一

(2)TCP提供拥塞控制,而UDP没有

2.2 TCP的可靠性是怎么保证的

首先我们来看下TCPD的报文格式:

保证可靠性的机制主要是来自于TCP的报文格式:

(1)TCP的校验和

(2)序列号:保证TCP报文传输的顺序性

(3)确认号:确认应答机制,超时重传

(4)窗口大小:流量的拥塞控制

(5)紧急指针:异常情况下进行消息通报

(6)源端口和目标端口:确保一对一连接

2.3 TCP的三次握手和四次挥手

(1)三次握手

第一次握手:建立连接时,客户端发送SYN包(SEQ=x)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号。

第二次握手:服务器收到SYN包,必须确认客户端的SYN(ack=x 1),同时自己也发送一个SYN包(SEQ=y),即SYN ACK包,此时服务器进入SYN_RECV状态。

第三次握手:客户端收到服务器的SYN ACK包,向服务器发送确认包ACK(ack=y 1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。

(2)四次挥手

第一次挥手:TCP客户端发送一个FIN,用来关闭客户到服务器的数据传送。

第二次挥手:服务器收到这个FIN,它发回一个ACK,确认序号为收到的序号加1。和SYN一样,一个FIN将占用一个序号。

第三次挥手: 服务器关闭客户端的连接,发送一个FIN给客户端。

第四次挥手: 客户端发回ACK报文确认,并将确认序号设置为收到序号加1。

2.4 TCP建立连接后数据如何传输

(1)正常情况下数据传输

首先客户端和服务端经过三次握手后已经建立了数据连接

客户端向服务端发送数据时,通过seq数据包携带data(数据)向服务端发送,服务端收到后返回确认号为seq的序列号 数据的长度再加一,即ack=seq data 1

(2)超时或异常情况

为了完成数据包的重传,TCP套接字每次发送数据包时都会启动定时器,如果在一定时间内没有收到目标机器传回的 ACK 包,那么定时器超时,数据包会重传。一般情况下TCP数据包最多重传三次,根据系统不同,重传次数会有差异。

0 人点赞