OSI参考模型有7层,TCP/IP有4层(一般看作5层)

#5层参考模型 #

























应用层

(用户对用户)

任务:提供系统与用户的接口

功能:1.文件传输; 2.访问和管理; 3.电子邮件服务
协议:FTP(21), SMTP(25), POP3(110), HTTP(80)


传输层(运输层)

(应用对应用,进程对进程)

传输单位:报文段(TCP)或用户数据报(UDP)

任务:负责主机中两个进程之间的通讯

功能:1.为端到端连接提供可靠的传输服务;2.为端到端连接提供流量控制,差
错控制,服务质量等管理服务

协议:TCP,UDP

网络层

(网络层,IP层)

(主机对主机)

传输单体:数据报

所实现的硬件:路由器

任务:1.将传输层传下来的报文段封装成分组;2.选择适当的路由,使传输层
传下来的分组能够交付到目的主机

功能:1.为传输层提供服务;2.组包和拆包;3.路由选择;4拥塞控制

协议:ICMP,ARP,RARP,IP,IGMP

数据链路层

(链路层)

传输单位:帧

所实现的硬件:交换机,网桥

任务:将网络层传下来的IP数据报组装成帧

功能:1.链路连接的建立,拆除,分离;2.帧定界和帧同步;3.差错检测

协议:PPP,HDLC,ARQ

物理层

传输单位:比特

所实现的硬件:集线器,中继器

任务:透明地传输比特流
功能:为数据端设备提供传送数据道路

补充:

会话层:功能是在两个结点间建立,维护,释放面向用户的连接,并对会话管理和控制,保证会话数据可靠传输

表示层:负责处理为两个内部结构不同的通信系统间交换信息的表示结构,能为数据加密和解密

问:

TCP/IP是4层还是5层

答:是4层。5层是综合了OSI和TCP/IP的优点,才有了5层

OSI参考模型和TCP/IP模型的特性对比













OSI参考模型

1.3个主要概念:服务,接口,协议

2.协议有很好的隐蔽性

3.产生在协议发明之前

4.共有7层

网络层:连接和无连接

传输层:仅有面向连接

TCP/IP参考模型

1.没有明确区分服务,接口,协议

2.产生在协议发明之后

3.共有4层(不是5层)

网络层:仅有无连接

传输层:面向连接和无连接

例子

用电子邮件为例解释7层工作原理:

首先在应用层编辑邮件,然后把编辑好的邮件发给表示层,为了提高速度,表示层将邮件压缩,表示可以选择加密邮件或者不加密,然后再传给会话层,这时候会话层会发信息提示你要给别人发邮件了,然后把邮件传给传输层,传输层把邮件分段(数据无法一次传输),分段的邮件到达网络层,网络层对数据段进行封装并加入报头(形成数据报),其实应用层开始每往下层传输就要加入报头及信息(在数据链路层既要加报头又要加报尾),然后网络层对传输路径进行选择,之后在传给数据链路层,数据链输层将数据报封装成帧,最后把信息发到物理层,形成比特流,进而送到传输媒体


传输层:TCP/IP 相关知识,和 UDP 比较

数据链路层按MAC地址寻址,网络层按IP地址寻址,传输层按端口号寻址

只有通过IP地址和端口号才能唯一确定的连接的端口称为套接字。它唯一地标识了网络中的某台主机上的某个应用。

UDP

1.传送数据前无需建立连接,数据到达后也无需确认

2.不可靠交付

3.报文段头部短,传输开销小

TCP

1.面向连接,不提供广播和多播

2.可靠交付

3.报文段头部长,传输开销大

问:UDP数据报与IP分组的区别?

答:IP分组要经过互联网中许多路由器的存储转发,但UDP数据报是在传输层的端到端抽象的逻辑信道中传送的,UDP数据报只是IP数据报中的数据部分

TCP传输连接为3个部分:连接建立,数据传送和连接释放

TCP连接的端点叫做套接字

三次握手

第一步:客户机A的TCP向服务器B发出连接请求报文段,其中同步位SYN=1(TCP规定,SYN报文段不能携带数据,但要消耗一个序号),并选择序号seq=x,表明传送数据时的第一个数据字节的序号是x

第二步:服务器收到数据报,从SYN=1知道,这是一个建立连接的请求,如果同意,则发回确认。B在确认报段中使SYN=1,ACK=1,确认序号ACK=x+1,自己选择序号seq=y,该报文段也不能携带数据

第三部:A收到报文段后向B给出确认,其ACK=1,确认序号ack=y+1。A的TCP通知上层应用进程,连接已经建立。B的TCP收到主机A的确认后,通知上层应用进程,此时TCP连接已经建立。

四次挥手

第一步:数据传输结束后,通信双方都可释放连接。假若A先发出连接释放报文段,并停止发送数据。A将连接释放报文段FIN=1,序号seq=u。当发送FIN报文时,发送FIN的一端不能发送数据,但是对方还是可以发送数据

第二步:B发出确认,确认号ack=u+1,而报文段自己的序号seq=v,ACK=1。B若发送数据,则A仍要接收

第三步:若B已经没有要向A发送的数据,其应用进程就通知TCP释放连接,报文段为,FIN=1,seq=w

第四步:A收到连接释放报文段后,必须发出确认。在确认报文段中,ACK=1,确认序号ack=w+1,自己的序号seq=u+1,并等待2MSL秒,若A无回复,则关闭连接。

问题

问:为什么TCP在建立连接时不能每次都选择相同的,固定的初始序号?
答:假定有一些在网络中滞留时间较长的TCp报文段最后到达了另一个主机,但是传送该报文段的那个连接早已释放了,这时到达另一个主机TCP连接是一条新的TCP连接,这时在新的TCP连接下主机接收到旧的连接,结果会产生错误

问:为什么不采用”两次握手“建立连接
答:改成两次,有可能发生死锁。比如主机A给主机B发送连接请求分组,主机B收到这个分组后,发送了应答分组,但是在途中,该应答分组丢失。但是主机B以为该分组已到达主机A,已成功建立连接,开始发送数据分组。但是主机A没有收到的应答分组,并不知道B是否已经准备好,也不知道B发送数据使用的序列,甚至怀疑B是否收到自己的请求分组,这种情况下,A认为连接并未建立成功,所以将忽略B发来的任何数据分组,只等待应答分组,B发出的分组超时后将重发,重复发送同样的分组,从而形成了死锁

问:为什么要等待2MSL秒
答:为了保证A最后发出的确认报文段能够到达B。如果A不等待2MSL,A返回的最后确认报文段丢失,B不能进入正常关闭状态,而A此时已经关闭,也不可能在重传