一、 TCP/IP四层模型

    1、应用层:应用程序间沟通的层,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。

    2、传输层:在此层中,它提供了节点间的数据传送服务,如传输控制协议(TCP)、用户数据报协议(UDP)等,TCP和UDP给数据包加入传输数据并把它传输到下一层中,这一层负责传送数据,并且确定数据已被送达并接收。

    3、互连网络层:负责提供基本的数据封包传送功能,让每一块数据包都能够到达目的主机(但

不检查是否被正确接收),如网际协议(IP)。

    4、网络接口层:对实际的网络媒体的管理,定义如何使用实际网络(如Ethernet、Serial Line等)来传送数据。

二、OSI七层模型

    物理层、数据链路层、网络层、传输层、表示层、会话层、应用层

     OSI七层协议体系结构的概念清楚,理论也比较完整,但它既复杂又不实用。所以转换成了TCP/IP四层模型

三、TCP/IP协议栈与数据包封装

    传输层及其以下的机制由内核提供,应用层由用户进程提供应用程序对通讯数据的含义进行释,而传输层及其以下处理通讯的细节,将数据从一台计算机通过一定的路径发送到另一台计算机。应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header),称为封装(Encapsulation),如下图所示:

    网络基础_第1张图片

  

不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报(datagram),在链路层叫做帧(frame)。数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,最后将应用层数据交给应用程序处理。

上图对应两台计算机在同一网段中的情况,如果两台计算机在不同的网段中,那么数据从一台计算机到一台计算机传输过程中要经过一个或多个路由器,如下图所示。

      

网络基础_第2张图片1、在链路层之下还有物理层,指的是电信号的传递方式。

    集线器工作在物理层,用于将已衰减的信号再次放大 使之传的更远

2、链路层有以太网、令牌环网、等标准,链路层负责网卡设备的驱动、帧同步、

    交换机工作在链路层、用于在不同的链路层网络之间转发数据帧

3、网络层的IP协议是构成Internet的基础。

    路由器工作在网络层,兼有交换机的功能,可以在不同的链路层接口之间转发数据包,因此路  由器需要将进来的数据包拆掉网络层和链路层两层首部重新封装。IP 协议不保证传输的可靠性,数据  包在传输过程中可能丢失,可靠性可以在上层协议或应用程序中提供支持

4、网络层负责点到点的传输,而传输层负责端到端的传输。传输层可选择TCP或UDP协议。

    TCP是一种面向连接的、可靠的协议。

    UDP协议不面向连接,也不保证可靠性,

四、目的主机收到数据包后,如何经过各层协议栈最后到达应用程序呢?

   以太网驱动程序首先根据以太网首部中的“上层协议”字段确定该数据帧的有效载荷(payload,指除去协议首部之外实际传输的数据)是IP、ARP还是RARP协议的数据报,然后交给相应的协议处理。假如是IP数据报,IP协议再根据IP首部中的“上层协议”字段确定该数据报的有效载荷 是TCP、UDP、ICMP还是IGMP,然后交给相应的协议处理。假如是TCP段或UDP段,TCP或UDP协议再根据TCP首部或UDP首部的“端口号”字段确定应该将应用层数据交给哪个用户进程。Ip地址是标识网络中不同主机的地址,而端口号就是同一台主机上标识不同进程的地址,IP 地址和端口号合起来标识网络中唯一的进程。

   虽然IP、ARP和RARP数据报都需要以太网驱动程序来封装成帧,但是从功能上划分,ARP和RARP属于链路层,IP属于网络层。虽然ICMP、IGMP、TCP、UDP的数据都需要IP协议来封装成数据报,但是从功能上划分,ICMP、IGMP与IP同属于网络层,TCP和UDP属于传输层

五、以太网的帧格式

    以太网的帧格式如下所示:

    网络基础_第3张图片

1、其中的源地址和目的地址是指网卡的硬件地址(也叫MAC地址),长度是48位,是在网卡出厂时固化的.

  帧协议类型字段有三种值,分别对应IP、ARP、RARP。帧末尾是CRC校验码。

2、以太网帧中的数据长度规定最小46字节,最大1500字节,ARP和RARP数据包的长度不够46字节,要在后面补填充位.最大值1500称为以太网的最大传输单元(MTU),不同的网络类型有不同的MTU,如果一个数据包从以太网路由到拨号链路上,数据包长度大于拨号链路的MTU了,则 需要对数据包进行分片。MTU这个概念指数据帧中有效载荷的最大长度,不包括帧首部的长度。

六、ARP数据包格式

  ARP地址解析协议。每台主机都维护一个ARP缓存表,可以用arp -a命令查看。缓存表中的表项有过期时间(一般为20分钟),如果20分钟内没有再次使用某个表项,则该表项失效,下次还要发ARP请求来获得目的主机的硬件地址。          

ARP数据报的格式如下所示:

网络基础_第4张图片

 硬件类型指链路层网络类型,1为以太网,协议类型指要转换的地址类型,0x0800为IP地址,后面两个地址长度对于以太网地址和IP地址分别为6和4(字节),op字段为1表示ARP请求,op字段为2表示ARP应答。