最后更新:2022-02-16 10:47
一、OSI网络模型
1.概念:是开放的系统互连模型,是一个协议规范。
2.七层:
1)应用层:
最接近用户的OSI层,这一层为用户的应用程序(电子邮件、文件传输)从而提供网络服务。
常见的TCP协议的应用层服务:HTTP(超文本传输协议)、FTP(文件传输协议)、SMTP(简单邮件传输协议)等。
我的理解:用户可以看到的一层,为用户的应用程序提供网络服务。
2) 表示层:
为应用层进程提供能解释所交换信息含义的一组服务,如代码转换、格式转换、文本压缩、文本加密与解密等;它控制许多与数据表示有关的功能。
我的理解:将不同的数据格式之间进行转换,从而实现不同计算机系统间的信息交换(例:A主机使用ASCII码,B主机使用EBCDIC编码,表示层来完成转换)
3)会话层:
会话层可以说是用户(进程)的入网接口。会话层虽然不参与具体的数据传输,但它却对数据传输进行管理。会话层在两个互相通信的应用进程之间建立、组织和协调其交互活动(即会话)。(总结:不同机器上的用户之间通过应用建立及管理会话,并能使会话获得同步)
我的理解:在两个相互通讯的应用程序之间建立链接,进行管理,控制。相当于在两个结点间建立面向用户的链接,并对会话进行管理和控制。(在两个结点,建立监测站)
4)传输层(建立站点):(层级协议:TCP,UDP,SCTP等)
是第一个端对端的传输控制层。网络层只是根据网络地址(IP地址)将发送端发出的数据传送到接收端,而传输层则负责将数据可靠地传送到相应的端口。*为源主机和目的主机的会话层之间建立一条传输通道,用以透明地传送数据。*传输层帮助我们建立端到端的通信,将数据交给我网络层
我的理解:建立通信两端之间的传输通道,方便两端可以进行通信,数据交给网络层。
5)网络层:(数据格式:IP地址+数据包)
网络层定义了一个IP协议,通过该协议寻址,路由选择,分组传输,创建主机到主机的通讯,建立网络连接和为上层提供服务并且可以进行排序,流量控制.等。(数据格式:IP地址+数据包)
通信的两个计算机之间可能要经过许多个结点和链路,经过好几个通信子网。网络层主要是为两个计算机提供可靠的逻辑线路。该层的数据传送单位是分组或包。网络层要选择合适的路由,使发送站的传输层所传下来的分组能够正确无误地按照地址找到目的站点,并交付给目的站点的传输层。
我的理解:进行通信的两个机子,可能需要多个线路进行链接传输数据,网络层提供可靠地址,提供最准确的线路。
6)数据链路层:(数据格式:数据帧)
定义了如何让格式化数据以数据帧为单位进行传输,它在物理层提供的服务的基础上向网络层提供服务,其最基本的服务是将发送端网络层发送的数据可靠的传输到接收端的网络层。在该层必须用纠错码来检错与纠错,是对物理层传输原始比特流的功能的加强,将物理层提供的可能出错的物理连接改造成为逻辑上无差错的数据链路,使之对网络层表现为一无差错的线路。
7)物理层:(数据格式:比特)
物理层为保证数据能完整的从发送端到接收端,定义物理设备标准(网线接口类型光纤接口类型…)降低社会成本,传输比特流,比如010101001这些。
为设备之间的通信互联和数据交互提供了技术,从物理层的协议可以都是一些硬件协议标准,
我的理解:通过电线,可以发送数据。
总结:
物理层——数据通过电线(物理设备标准)传输,完整发送到接收端
数据链路层——格式化数据,以数据帧单位传输,提供检测和纠正错误,可靠传输
网络层——寻找地址,路由选择,保证数据准确传送到指定终端【路由器、IP地址】
传输层——提供端对端的接口【端口地址:80端口、21端口】
会话层——两个结点间建立、维护面向用户的链接(逻辑链接:发送端接受端通信)
表示层——数据格式化,数据转换,为了不同计算机系统间的信息交换
应用层——文件传输,电子邮件,虚拟终端…主要是面向用户提供服务
二、TCP/IP四层模型
1.四层模型:
数据链路层:
作用:
1)实现网卡接口的网络驱动,来处理数据在以太网线等媒介上的传输。
2)为上层协议提供访问接口。
协议应用:
ARP和RARP(Reverse Address Resolve Protocol)即逆地址解析协议,该协议实现了IP地址和物理地址(MAC地址)之间的转换。
网络层:
网络有分局域网(LAN, Local Area Network)和广域网(WAN, Wide Area Network)。对于后者通常需要使用众多分级的路由器来连接分散的主机或者LAN,即通讯的两台主机一般不是直接连接,而是通过多个中间节点(路由器)连接的,从而形成网络拓扑连接。
(1) 网络层的任务之一就是选择这些中间节点(路由器),以确定两台主机间的通讯路径。
(2) 其次网络层对上层协议隐藏了网络拓扑连接的细节,在使得传输层看来通讯双方是直接连接的
2.2 协议应用
(1) IP协议: IP协议(Internet Protocol)是网络层最核心的协议,它根据数据包的目的IP地址来决定如何投递该数据包。若数据包不可直接发送给目标主机,那么IP协议就为它寻找一个合适的下一跳路由器,并将数据包交付给该路由器去转发,如此循环直至到达目标主机或者发送失败而丢弃该数据包。
数据包(装着目的IP地址)
若:数据包→目标主机 ×
则:数据包→路由器(进行转发)→目标主机 ×
…
→路由器(进行转发)→目标主机 √
(2) ICMP协议: ICMP协议(Internet Control Message Protocol,因特网控制报文协议)是IP协议的补充,用于检测网络的连接状态,如ping应用程序就是ICMP协议的使用。ICMP包发送是不可靠的,所以不能依靠接收ICMP包解决网络问题;ICMP与TCP/UDP不同,它们是传输层协议,虽然都具有类型域和代码域,但是前者和后者不同,ping用到的ICMP协议,不是端口。ICMP协议使用的是IP协议而非使用下层协议提供的的服务,所以严格来讲它并非网络层协议,而是网络层程序。
传输层
3.1 作用
传输层的作用是为应用程序提供端对端通讯的”错觉”,即为应用程序隐藏了数据包跳转的细节,负责数据包的收发、链路超时重连等。
3.2 协议应用
(1) TCP协议: TCP协议(Transmission Control Protocol, 传输控制协议)为应用程序提供可靠的、面向连接的、基于流的服务,具有超时重传、数据确认等方式来确保数据包被正确发送到目的端。因此TCP服务是可靠的,使用TCP协议通讯的双方必须先建立起TCP连接,并在系统内核中为该连接维持一些必要的数据结构,比如连接的状态,读写缓冲区,多个定时器等。当通讯结束时双方必须关闭连接以释放这些内核数据。基于流发送意思是数据是没有长度限制,它可源源不断地从通讯的一段流入另一端。
(2) UDP协议: UDP协议(User Datagram Protocol, 用户数据报协议)与TCP协议相反,它为应用程序提供的是不可靠的、无连接的基于数据报的服务。
无连接: 通讯双方不保持一个长久的联系,因此应用程序每次发送数据都要明确指定接收方的地址;
基于数据报的服务: 这是相对于数据流而言的,每个UDP数据报都有一个长度,接收端必须以该长度为最小单位将其内容一次性读出,否则数据将被截断。
UDP不具有发送时是被重发功能,所以UDP协议在内核实现中无需为应用程序的数据保存副本,当UDP数据报被成功发送之后,UDP内核缓冲区中该数据报就被丢弃了。
(3) SCTP协议: SCTP(Stream Control Transmission Protocol, 流控制传输协议)是为了在因特网上传输电话信号而设计的。
应用层
4.1 作用
应用层是在用户空间实现的,负责处理众多业务逻辑,如文件传输、网络管理。
4.2 协议应用
应用层的协议很多,如:
(1) telne协议: 远程登录协议,它使我们能在本地完成远程任务
(2) OSPF协议: OSPF协议(Open Shorttest Path First, 开放最短路径优先)是一种动态路由更新协议,用于路由器之间的通讯,以告知对方自身的路由信息
(3) DNS协议: DNS协议(Domain Name Service, 域名服务)提供机器域名到IP地址的转换。如百度的机器域名是www.baidu.com,对应的IP地址是http://119.75.217.109/。
另外注意,ping是应用程序而非协议,它利用网络层的ICMP协议监测网络连接。
应用层协议可以跳过传输层直接使用网络层提供的服务,比如ping程序和OSPF协议;又可以既使用TCP服务,又可以使用UDP服务,如DNS协议。
个人理解:
应用层——决定这次通信的应用类型,用户具体实现应用业务,具体要干什么,包含DNS协议,OSPF协议
传输层——提供两台计算机之间的数据传输,包含TCP、UDP协议。
网络层——用来处理这些流动的数据包,为通信时的网络传输选择传输路线
数据链路层(实现数据在物理媒介上的传输)——包含了软件与硬件的接口部分,以及各种网络设备的硬件,也就是整个网络通信过程中最底层的基础设施
实现了网卡接口的网络驱动程序,以处理数据在物理媒介(比如以太网、令牌环等)上的传输。
三、三次握手/四次握手
注意:
ACK:表示是否前面确认号字段是否有效。
只有当ACK=1时,前面的确认号字段才有效。
TCP规定,连接建立后,ACK必须为1,带ACK标志的TCP报文段称为确认报文段。
SYN:在建立连接时使用,用来同步序号。
当SYN=1,ACK=0时,请求建立连接的报文段;
当SYN=1,ACK=1时,表示对方同意建立连接。
SYN=1,说明这是一个请求 建立连接或同意建立连接的报文。
FIN: 表示通知对方本端要关闭连接了,标记数据是否发送完毕。
如果FIN=1,即告诉对方: “我的数据已经发送完毕,你可以释放连接了”,带FIN标志的TCP报文段称为结束报文段。
三次握手:
第一次:首先A向B发SYN(同步请求)
客户端向服务器发syn包→进入SYN_SEND状态,等待服务器确认
第二次:然后B回复SYN+ACK(同步请求应答)
服务器收到syn包→确认客户端的syn→服务器本身发送syn包(SYN+ACK)
→服务器进入SYN_RECV状态
第三次:最后A回复ACK确认
客户端收到服务器的SYN+ACK包→向服务器发送确认包ACK(ack=k+1),
发送完毕→客户端和服务器进入ESTABLISHED状态
完成三次握手!客户端与服务器开始传送数据
四次握手:
第一次:客户端发送一个FIN,用来关闭客户机到服务器的数据传送,客户机进入FIN_WAIT_1状态。
第二次:服务器收到FIN后,发送一个ACK给客户端,确认序号为收到序号+1,则服务器进入CLOSE_WAIT状态。
第三次:服务器发送一个FIN,用来关闭服务器到客户端的数据传送,服务器进入LAST_ACK状态。
第四次:客户机收到FIN后,客户机进入TIME_WAIT状态,接着发送一个ACK给服务器,确认序号为收到序号+1,服务器进入CLOSED状态,完成四次挥手。
本文由 在线网速测试 整理编辑,转载请注明出处。