【自我笔记之Linux】 OSI 7 层模型与 tcp/ip 协议 4 层模型

1、网络接口层(对应OSI模型的物理层与数据链路层):它负责监视数据在主机和网络之间的交换。

事实上,tcp/ip本身并未定义该层的协议,而由参与互连的各网络使用自己的物理层和数据链路层协议,然后与tcp/ip的网络接入层进行连接。

数据链路层(参考OSI模型)两个常用的协议是ARP协议(Address Resolve Protocol,地址解析协议)和RARP协议(ReverseAddress Resolve Protocol,逆地址解析协议)。它们实现了IP地址和机器物理地址(通常是MAC地址,以太网、令牌环和802.11无线网络都使用MAC地址)之间的相互转换。

ARP协议:网络层使用IP地址寻址一台机器,而数据链路层使用物理地址寻址一台机器,因此网络层必须先将目标机器的IP地址转化成其物理地址,才能使用数据链路层提供的服务。(IP地址 ---> 物理地址)

RARP协议:仅用于网络上的某些无盘工作站。因为缺乏存储设备,无盘工作站无法记住自己的IP地址,但它们可以利用网卡上的物理地址来向网络管理者(服务器或网络管理软件)查询自身的IP地址。运行RARP服务的网络管理者通常存有该网络上所有机器的物理地址到IP地址的映射。(物理地址 ---> IP地址)

 

2、网络层:网络层实现数据包的选路和转发。主要解决主机到主机的通信问题。

注重重新赋予主机一个IP地址来完成对主机的寻址。 它还负责数据包在多种网络中的路由。

网络层最核心的协议是IP协议(internet protocol,因特网协议),IP协议是网际互联层最重要的协议,它提供的是一个不可靠、无连接的数据报传递服务。IP协议根据数据包的目的IP地址来决定如何投递它。如果数据包不能直接发送给目标主机,那么IP协议就为它寻找一个合适的下一跳(next hop)路由器,并将数据包交付给该路由器来转发。多次重复这一过程,数据包最终到达目标主机,或者由于发送失败而被丢弃。可见,IP协议使用逐跳(hop by hop)的方式确定通信路径。

网络层另外一个重要的协议是ICMP协议(internet control message protocol,因特网控制报文协议)。它是IP协议的重要补充,主要用于检测网络连接。

8位类型字段用于区分报文类型。它将ICMP报文分为两大类

差错报文,这类报文主要用来回应网络错误,比如目标不可到达(类型值为3)和重定向(类型值为5);

查询报文,这类报文用来查询网络信息,比如ping程序就是使用ICMP报文查看目标是否可到达(类型值为8)的。

有的ICMP报文还使用8位代码字段来进一步细分不同的条件。比如重定向报文使用代码值0表示对网络重定向,代码值1表示对主机重定向。

ICMP报文使用16位校验和字段对整个报文(包括头部和内容部分)进行循环冗余校验(Cyclic Redundancy Check,CRC),以检验报文在传输过程中是否损坏。不同的ICMP报文类型具有不同的正文内容。

 

3、传输层:传输层为两台主机上的应用程序提供端到端(end to end)的通信。

与网络层使用的逐跳通信方式不同,传输层只关心通信的起始端和目的端,而不在乎数据包的中转过程。为应用层实体提供端到端的通信功能,保证了数据包的顺序传送及数据的完整性。该层定义了两个主要的协议:传输控制协议(TCP)和用户数据报协议(UDP)。

  • TCP协议(Transmission Control Protocol,传输控制协议)为应用层提供可靠的、面向连接的和基于字节流的服务。TCP协议使用超时重传、数据确认等方式来确保数据包被正确地发送至目的端,因此TCP服务是可靠的。(数据能有效地传输到对方且数据不失真)

使用TCP协议通信的双方必须先建立TCP连接(三次握手),并在内核中为该连接维持一些必要的数据结构,比如连接的状态、读写缓冲区,以及诸多定时器等。当通信结束时(四次挥手),双方必须关闭连接以释放这些内核数据。

基于流的数据没有边界(长度)限制,它源源不断地从通信的一端流入另一端。发送端可以逐个字节地向数据流中写入数据,接收端也可以逐个字节地将它们读出。但是容易出现“粘包问题”,如果接收方一次未接收数据完成,数据会被缓存在接收缓冲区。

  • UDP协议(User Datagram Protocol,用户数据报协议)它为应用层提供不可靠、无连接和基于数据报的服务。意味着UDP协议无法保证数据从发送端正确地传送到目的端。如果数据在中途丢失,或者目的端通过数据校验发现数据错误而将其丢弃,则UDP协议只是单地通知应用程序发送失败。因此,使用UDP协议的应用程序通常要自己处理数据确认、超时重传等逻辑。

UDP协议是无连接的,即通信双方不保持一个长久的联系,因此应用程序每次发送数据都要明确指定接收端的地址(IP地址等信息)。

基于数据报的服务,每个UDP数据报都有一个长度,接收端必须以该长度为最小单位将其所有内容一次性读出,否则数据将被截断。

 

4、应用层(应用层对应OSI参考模型的应用层、表示层和会话层):应用层负责处理应用程序的逻辑。

ping是应用程序,而不是协议,它利用icmp报文检测网络连接,是调试网络环境的必备工具。

基于TCP协议的,如FTP协议(File Transfer Protocol,文件传输协议)、TELNET协议(虚拟终端协议)、HTTP协议(Hyper Text TransferProtocol,超文本传输协议)

基于UDP协议的,如NTP协议(Network Time Protocol,网络时间协议)、TFTP协议(Trivial File Transfer Protocol,简单文件传输协议)、SNMP协议(简单网络管理协议)

DNS(Domain Name Service)是域名解析服务,提供域名到IP地址之间的转换—-可以基于TCP也可以基于UDP。

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值