表示通信线路允许通过的信号频带范围就称为线路的带宽(或通频带)。
发送时延(transmission delay)是主机或路由器发送数据帧所需要的时间,也就是从发送数据帧的第一个比特算起,到该帧的最后一个比特发送完毕所需的时间。
传播时延(propagation delay)是电磁波在信道中传播一定的距离需要花费的时间。
因特网是一个很大的互联网,它由大量的异构(heterogeneous)网络通过路由器(router)相互连接起来。因特网主要的网络层协议是无连接的网际协议IP (Internet Protocol)和许多种路由选择协议,因此因特网的网络层也叫做网际层或IP层。
七层协议
应用层,表示层,会话层,运输层,网络层,数据链路层,物理层。
五层协议:将7层协议总的应用层,表示层,会话层划在同一层。
应用层:
协议有:HTTP TFTP SMTP SNMP DNS TELNET HTTPS POP3 DHCP等
OSI体系结构中的最上层,通过应用进程间的交互来完成特定的网络应用。应用层协议就是应用进程间通信和交互的规则。为操作系统或网络提供接口。 FTP SNMP HTTP
七层协议中:
表示层:数据的表示,安全,压缩。可以保证一个应用程序的数据能被另一个应用程序识别。应用程序在网络中的加密解码,能译成网络中能传播的数据格式,这种格式化也因所使用网络的类型不同而不同。也能将网络中的数据翻译成应用程序能识别的数据格式。如:URL加密,图片编解码。
会话层:建立,管理,终端对话,对应主机进程指的是本地主机和远程主机间的连接。负责在网络中的两节点之间建立、维持和终止通信。 会话层的功能包括:建立通信链接,保持会话过程通信链接的畅通,同步两个节点之间的对话,决定通信是否被中断以及通信中断时决定从何处重新发送。 如:服务器验证登录,断点续传。
运输层:
协议有:TCP UDP等,数据包一旦离开网卡即进入网络传输层。
运输层的任务就是负责向两台主机中进程之间的通信提供通用的数据传输服务。提供可靠的,透明的端到端的数据传输,定义数据传输的接口,流量控制,差错校验。主要是将从下层接收的数据进行分段和传输,到达目的地址后再进行重组。常常把这一层数据叫做段。传输协议同时进行流量控制或是基于接收方可接收数据的快慢程度规定适当的发送速率。除此之外,传输层按照网络能处理的最大尺寸将较长的数据包进行强制分割。
TCP:传输控制协议:提供面向连接的(三次握手),可靠的数据传输服务,其数据传输的单位是报文段。
TCP把连接作为最基本的抽象。TCP连接的端点叫做套接字(socket)或插口。根据RFC 793的定义:端口号拼接到(contatenated with) IP地址即构成了套接字。因此,套接字的表示方法是在点分十进制的IP地址后面写上端口号,中间用冒号或逗号隔开。例如,若IP地址是192.3.4.5而端口号是80,那么得到的套接字就是(192.3.4.5: 80)。每一条TCP连接唯一地被通信两端的两个端点(即两个套接字)所确定。套接字 socket=(IP地址:端口号),用来指定连接的主机和主机上的应用程序。TCP 连接的端点是个很抽象的套接字,即(IP 地址:端口号)。也还应记住:同一个IP地址可以有多个不同的TCP连接,而同一个端口号也可以出现在多个不同的TCP连接中。
UDP:用户数据报协议:提供无连接的,进最大努力的数据传输服务(不保证数据传输的可靠性),其数据传输的单位是用户数据报。
-
在发送端,应用层将数据传递给传输层的UDP协议,UDP只会给数据增加一个UDP头,标识是UDP协议,然后就传递给网络层了。
-
在接收端,网络层将数据传递给传输层,UDP只去除IP报文头就传递给应用层了,不做任何拼接操作。
TCP则提供面向连接的服务。在传送数据之前必须先建立连接,数据传送结束后要释放连接。TCP不提供广播或多播服务。由于TCP要提供可靠的、面向连接的运输服务,因此不可避免地增加了许多的开销,如确认、流量控制、计时器以及连接管理等。这不仅使协议数据单元的首部增大很多,还要占用许多的处理机资源。
网络层是为主机之间提供逻辑通信,而运输层为应用进程之间提供端到端的逻辑通信
运输层还要对收到的报文进行差错检测。在网络层,IP数据报首部中的检验和字段,只检验首部是否出现差错而不检查数据部分。
在协议栈层间的抽象的协议端口是软件端口,软件端口是应用层的各种协议进程与运输实体进行层间交互的一种地址。两个计算机中的进程要互相通信,不仅必须知道对方的IP地址(为了找到对方的计算机),而且还要知道对方的端口号(为了找到对方计算机中的应用进程)。UDP和TCP的首部格式中,它们都有源端口和目的端口这两个重要字段。当运输层收到IP层交上来的运输层报文时,就能够根据其首部中的目的端口号把数据交付应用层的目的应用进程。
网络层
协议有:ICMP IGMP IP(IPV4 IPV6) ARP RARP等。
网络层层负责为分组交换网上的不同主机提供通信服务。在发送数据时,网络层把运输层产生的报文段或数据报封装成分组或包进行传送。另一个任务就是要选择合适的路由,使源主机运输层所传下来的分组能够通过网络中的路由器找到目的主机。
IP地址协议,在网络层中标记目标地址的IP,在数据传输过程中IP地址不发生改变而硬件地址(MAC帧地址会再每经过一次转换发送改变)会变,在路由器当中(不同网络之间的转发介质)路由器会根据IP地址选择下一个路由。
硬件端口是不同硬件设备进行交互的接口
数据链路层
数据链路层协议的代表包括:SDLC、HDLC、PPP、STP、帧中继等。
数据链路层的三个基本问题:封装成帧、透明传输和差错检测。(流量控制)控制发送的传输速度,使得接收方来得及接收。传输层TCP也有流量控制功能,但TCP是端到端的流量控制,链路层是点到点(比如一个路由器到下一个路由器)
数据链路层将网络层交下来的IP数据报组装成帧,在两个相邻节点上传送帧。建立逻辑连接、进行硬件地址寻址、差错校验等功能。(由底层网络定义协议)将比特组合成字节进而组合成帧,用MAC地址访问介质,错误发现但不能纠正。
封装成帧(framing)就是在一段数据的前后分别添加首部和尾部,这样就构成了一个帧。接收端在收到物理层上交的比特流后,就能根据首部和尾部的标记,从收到的比特流中识别帧的开始和结束。
它的主要功能是如何在不可靠的物理线路上进行数据的可靠传递。为了保证传输,从网络层接收到的数据被分割成特定的可被物理层传输的帧。帧是用来移动数据的结构包,它不仅包括原始数据,还包括发送方和接收方的物理地址以及检错和控制信息。其中的地址确定了帧将发送到何处,而纠错和控制信息则确保帧无差错到达。 如果在传送数据时,接收点检测到所传数据中有差错,就要通知发送方重发这一帧。
物理层
主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。它的主要作用是传输比特流(就是由1、0转化为电流强弱来进行传输,到达目的地后在转化为1、0,也就是我们常说的数模转换与模数转换)。这一层的数据叫做比特。
物理层的任务就是为它的上一层提供一个物理连接,以及它们的机械、电气、功能和过程特性。如规定使用电缆和接头的类型、传送信号的电压等。在这一层,数据还没有被组织,仅作为原始的位流或电气电压处理,单位是bit(比特)。
一个设备工作在哪一层,关键看它工作时利用哪一层的数据头部信息。网桥工作时,是以MAC头部来决定转发端口的,因此显然它是数据链路层的设备。 具体说: 物理层:网卡,网线,集线器,中继器,调制解调器 数据链路层:网桥,交换机 网络层:路由器 网关工作在第四层传输层及其以上。 集线器是物理层设备,采用广播的形式来传输信息。 交换机就是用来进行报文交换的机器。多为链路层设备(二层交换机),能够进行地址学习,采用存储转发的形式来交换报文.。 路由器的一个作用是连通不同的网络,另一个作用是选择信息传送的线路。选择通畅快捷的近路,能大大提高通信速度,减轻网络系统通信负荷,节约网络系统资源,提高网络系统畅通率。
TCP/IP协议
建立连接
三次握手:目的建立稳定的连接,确定客户端和服务端收发功能都正常。
seq:TCP发送方的字节数据编号,告诉对方我要开始发送数据的序列号.
syn:同步序列编号
第一次握手:客户端向服务端发送连接请求SYN,并进入SYN_SENT状态,等待服务器的确认。SYN=1,seq=x。
第二次握手:当服务端收到客服端发送的连接请求,会将该连接放入半连接队列并向客户端发送SYN和确认报文段ACK,进入SYN_RECD状态。还回ACK=x+1,SYN=1,seq=y。
第三次握手:客户端收到SYN+ACK报文后向服务端发送确认报文段ACK,并进入ESTABLISHED状态,开始读写数据。服务端一旦收到客户端的确认报文,就进入ESTABLISHED状态,就可以进行读写数据了。客户端会返回ACK=y+1,seq=x+1,表示已经收到并且建立起连接。
tcp通信需要确保双方都具有数据收发的能力,得到ACK响应则认为对方具有数据收发的能力,因此双方都要发送SYN确保对方具有通信的能力。第一次、第二次握手不可以携带数据,而第三次握手是可以携带数据的。
ISN
全称是Initial Sequence Number
,是TCP发送方的字节数据编号的原点,告诉对方我要开始发送数据的初始化序列号。ISN如果是固定的,攻击者很容易猜出后序的确认号,为了安全起见,避免被第三方猜到从而发送伪造的RST
报文,因此ISN是动态生成的
断开连接
四次挥手:目的断开连接,确定客户端和服务端数据收发完成,不会再传送和接收数据。
第一次:客户端向服务发送报文段FIN报,此时客户端进入FIN_WAIT1状态,客户端将不会再发送数据,但是可以接收来自服务端的数据。
第二次:服务端收到客户端发送过来的断开连接请求,返回确认报文段ACK并进入CLOSE_WAIT状态,会继续发送还未发送完的数据。客户端收到服务器对结束报文段的确认就会进入到FIN_WAIT2状态,开始等待服务器的结束报文段
第三次:当服务端数据也发送完成后,会向客户端发送结束报文段FIN包,此时服务器进入LAST_ACK状态,等待最后一个ACK的带来,并且停止发送数据。
第四次:客户端收到服务器发来的结束报文段, 进入TIME_WAIT, 并发出送确认报文段ACK;服务器收到了对结束报文段确认的ACK,进入CLOSED状态,断开连接。而客户端要等待2MSL的时间,才会进入到CLOSED状态
TIME_WAIT状态作用:如果主动关闭方进入CLOSED状态后,被动关闭方发送FIN包后没有得到ACK确认,超时后就会重传一个FIN包。如果客户端没有TIME_WAIT状态而直接进入CLOSED状态释放资源,就不能对重传的FIN包做出回应。
MSL指的是报文在网络中最大生存时间。在客户端发送对服务端的FIN确认包ACK后,这个ACK包有可能到达不了,服务器端如果接收不到ACK包就会重新发送FIN包。所以客户端发送ACK后需要留出2MSL时间(ACK到达服务器器+服务器发送FIN重传包,一来一回)等待确认服务器端缺失收到了ACK包。也就是说客户端如果等待2MSL时间也没收到服务器端重传的FIN包,则就可以确认服务器已经收到客户端发送的ACK包。
在TCP握手的时候,接收端将SYN包和ACK确认包合并到一个包中发送的,所以减少了一次包的发送。对于四次挥手,由于TCP是全双工通信,主动关闭方发送FIN请求不代表完全断开连接,只能表示主动关闭方不再发送数据了。而接收方可能还要发送数据,就不能立即关闭服务器端到客户端的数据通道,所以就不能将服务端的FIN包和对客户端的ACK包合并发送,只能先确认ACK,等服务器无需发送数据时在发送FIN包,所以四次挥手时需要四次数据包的交互。
tcp连接管理中的保活机制: tcp通信中,若两端长时间没有数据往来,则这时候每隔一段时间,服务端会向客户端发送一个保活探测数据报,要求客户端进行回复。若连续多次没有收到响应,就认为连接已经断开。长时间默认为7200s,每隔一段时间默认为75s,连续多次无响应默认为9次。这些数据都可以在套接字中修改,接口:Setsockopt
IP地址,一共分成了5类,范围分别如下:
-
A类IP:从0.0.0.0 – 127.255.255.255,共有16777216个IP
-
B类IP:从128.0.0.0 – 191.255.255.255,共有65536个IP
-
C类IP:从192.0.0.0 – 223.255.255.255,共有256个IP
-
D类IP:从224.0.0.0 – 239.255.255.255
-
E类IP:从240.0.0.0 – 255.255.255.255
而其中,能在Internet或被用户使用的A、B、C三类,而D类用作组播地址,E类作为科研保留地址段
公有IP地址的范围:
-
A类的公有IP: 1.0.0.0~9.255.255.255 11.0.0.0~126.255.255.255
-
B类的公有IP: 128.0.0.0~172.15.255.255 172.32.0.0~191.255.255.255
-
C类的公有IP: 192.0.0.0~192.168.255.255 192.169.0.0~223.255.255.255
私有IP地址的范围:
-
A类私有IP地址: *10.0.0.0~10.255.255.255*
-
B类私有IP地址: *172.16.0.0~172.31.255.255*
-
C类私有IP地址: *192.168.0.0~192.168.255.255*
-
路由器的基本功能如下:
第一,网络互连:路由器支持各种局域网和广域网接口,主要用于互连局域网和广域网,实现不同网络互相通信;
第二,数据处理:提供包括分组过滤、分组转发、优先级、复用、加密、压缩和防火墙等功能;
第三,网络管理:路由器提供包括路由器配置管理、性能管理、容错管理和流量控制等功能。
路由器是互联网络中必不可少的网络设备之一,路由器是一种连接多个网络或网段的网络设备,它能将不同网络或网段之间的数据信息进行“翻译”,以使它们能够相互“读”懂对方的数据,从而构成一个更大的网络。 路由器有两大典型功能,即数据通道功能和控制功能。数据通道功能包括转发决定、背板转发以及输出链路调度等,一般由特定的硬件来完成;控制功能一般用软件来实现,包括与相邻路由器之间的信息交换、系统配置、系统管理等。