物理层
物理层考虑的是怎样才能连接各种计算机传输媒体上传输的数据比特流,而不是具体的传输媒体,用于物理层的协议叫做物理层的规程。
数据链路层
对于点对点的链路,PPP协议是目前应用最广泛的数据链路层协议
PPP协议的组成
1)一个将数据报封装到串行链路的方法,PPP既支持异步链路,又支持面向比特的同步链路。IP数据报在PPP帧中就是其信息部分。
2)一个用来建立,配置和测试数据链路连接的链路控制协议LCP。通信双方可协商一些选项。链路控制,PPP为用户发起呼叫以建立链路,在建立链路是协商以参数选择,通信过程中随时测试链路。
3)一套网络控制协议NCP,其中的每个协议支持不同的网络层协议。如IP、OSI。来为上层提供服务接口。针对上层不同的协议类型,会使用不同的NCP组件。如对于IP提供IPCP接口,对于IPX提供IPXCP接口,对于APPLETALK提供ATCP接口等。
CSMA/CA协议是重要的一个协议
工作流程
1.送出数据前,监听媒体状态,等没有人使用媒体,维持一段时间后,才送出数据,由于每个设备的随机时间不同,所以可以 减少冲突的时间。
2.送出数据之前,前进行一小段的请求传送报文给目标端,等待目标端回应CTS(clear to send)报文后,才开始传送。利用RTS-CTS握手程序,确保接下来的传送资料时,才不会发生碰撞。由于RTS-CTS封包很小,让传送的无效开销很小。
工作原理
1)首先检测信道是否有用,如果检测出信道繁忙,则等待一段时间后,才送出数据。
2)接收端如果能收到此帧,则过一段时间间隔后,向发送端发出确认帧ACK。
3)发送端收到ACK帧,确定数据正确传输,则经历一段时间间隔后,会出现一段空闲时间。
CSMA/CD协议提供寻址和媒体存取的控制方式,使得不同设备或网络上的节点可以在多点的网络上通信而不产生冲突。
作用:在传统的共享以太网中,所有节点共享传输介质,如何保证传输介质有序、高效地为许多节点提供传输服务,就是以太网的介质访问控制协议要解决的问题。
工作原理
发送数据前先帧听信道是否空闲,若空闲,即立即发送数据,若信道忙碌,则等待一段时间至信道中的信息传输结束后再发送数据;若上一段信息发送结束后,同时又两个或者两个以上节点都提出发送请求,则判定为冲突,若帧听到冲突,即停止发送数据,等待一段随机时间再尝试。、
所谓载波帧听,意思就是网络上个工作站在发生数据前要帧听总线上有没有数据传输。
所谓冲突就是若网络上有两个或者两个以上的工作站同时发送数据,就会产生信号的混合,两个工作站都辨不出什么,这种情况又称数据冲突又称碰撞。
CSMA/CA和CSMA/CD协议的主要差别
CSMA/CD:带有冲突检测的载波监听多路访问,可以检测冲突,但无法避免。
CSMA/CA:带有冲避免的载波帧听多路访问,发送包的同时不能检测到信道上有无冲突,只能尽量“避免”。
1.两者传输介质不同,VSMA/CD用于总线式以太网,而CSMA/CA则用于无线局域网等。
2.检测方式不同,CSMA/CD通过电缆中的电压变化来检测,CSMA/CA采用能量检测(ED),载波检测(CS),和能量载波混合检测三种检测信道忙闲的方式。
3.WALN中,对于某个节点来说,刚发出的信号强度远远大于来自其他节点的信号强度,也是说自己的信号会把其他节点的信号覆盖掉。
4.本节点有冲突,并不意味着其他节点有冲突。
综上。WALN中实现CSMA/CD是比较困难的。
网络层
网际协议IP
与IP协议配套使用的还有以下几种协议
1).地址解析协议ARP
2)逆地址解析协议RARP
3)网际控制协议ICMP
4)网际组管理协议IGMP
IP协议:如果有许多计算机通过一些路由器进行互联,由于参加的计算机网络都使用相同的网际协议IP,因此互联之后的计算机网络构成了虚拟互联网络。IP协议就能使这些性能各异的网络在网络层上看起来像一个统一的网络。
ARP:已经知道了一个机器(主机或路由器)的IP地址,需要找出相应的物理地址。
RARP:已经找到了物理地址,需要相应的IP地址。
ICMP:允许主机或路由器报告差错情况和提供有关的异常报告情况。
ICMP差错报告有5种
终点不可达:当路由器或主机不能交付数据报时
源点抑制:当路由器或主机由于拥塞而丢弃数据报时,向发送源点发送抑制报文。
时间超时:当路由器收到生存时间为零的数据报时丢弃数据报,并发送超时报文。
参数问题:当路由器或目的主机收到数据报首部中有的字段值不正确时。丢弃数据报并发送参数问题的报文。
改变路由(重定向)。把改变路由的报文发送给主机。以便下次正确找到。
不应该发送ICMP差错报文的几种情况
不能对差错报告再发送差错报告
对第一个时间片所有后续数据报片不发送ICMP差错报告。
对具有多播地址的数据报不发送ICMP差错报告。
对具有特殊地质(如127.0.0.0或0.0.0.0)的数据报并不发生ICMP差错报告。
ICMP的应用举例
PING:分组网间探测PING同来测试两个主机之间的连通性。PING使用了ICMP会送请求与会送回答报文。PING是应用层直接使用网络层ICMP的例子。没有通过传输层UDP和TCP
Tracerout:用来跟踪从原点到终点的路径。发送一连串的IP数据报,数据报中封装的是无法交付的UDP数据报,第一个数据报P1生存时间设置为1,当到达第一个路由器R1时,收下他,并把生存时间TTL减1,由于TTL等于0了,R1就把P1丢弃了,并向源主机发送ICMP时间超过报文。源主机接着发送第二个报文,并把TTL设置为2,若到达R2路由器TTL为0,则向源主机发送ICMP不可达报文。同样的道理,知道最后一个ICMP不可达报文是有目的主机发送。
路由选择协议
内部网关协议IGP:若RIP和OSPF等
外部网关协议EGP:BGP
RIP协议的特点:
(1)仅和相邻的路由器交换信息
(2)路由交换信息是当前本路由器所知道的全部信息,即自己的路由表。
(3)按固定时间间隔交换信息,例如,30秒。
OSPF的特点是不像RIP那样是面向距离的,
(1)像本自制系统的所有路由器发送信息
(2)发送信息就是与本路由器相邻的所有路由器的链路状态。所谓链路状态,就是本路由器和哪些路由器相邻。
(3)只要链路状态发送变化时,路由器才像所有路由器用洪范法发送信息。
BGP:不同的AS(自治系统)的路由器之间交换信息的协议。BGP只能是力寻一条能够到达目的网络的且比较好的路由,BGP采用了路径向量路由选择协议,与距离向量协议和链路协议有很大的区别。BGP发言人一般说是边界路由。
网际组管理协议IGMP
IGMP协议是让连接在本地局域网上的多播路由器知道本局域网上是否有主机(严格的讲是主机上的某个进程)参加或退出了某个多播组。(仅有IGMP还不能完成多播任务,还需要使用多播路由选择协议)
运输层
用户数据报协议UDP
该协议只在IP数据报服务上增加了一点小小的功能。它的特点是:
是无连接的:发送之前不需要建立练接
尽最大的努力交付:即不保证可靠交付,因此主机不需要维持复杂的练接状态表。
UDP是面向报文的:UDP一次交付完整的报文,既不合并也不拆分。交给IP层后,若太长,可能进行分片。
UDP没有拥塞控制:网络中出现拥塞不会是源主机的发送效率降低,对某些实时应用是很重要的,如IP电话,实时视频会议等,要求源主机以恒定速度发送数据。并且允许网络发送阻塞时丢失一些数据,但不允许有太大的时延。
UDP支持一对一,一对多,多对一和多对多的交互通信。
UDP的首部开销小。只要8个字节,TCP20个字节。
传输控制协议TCP
1.面向连接的传输协议。应用程序在使用TCP协议之前,必须建立练接,传输数据完毕后必须释放连接
2.每一条TCP只能连接两个端点
3.TCP提供可靠交付服务:TCP传输数据无差错,不丢失,不重复,且按序到达。
4.TCP提供全双工服务:允许通信双发的应用进程在任何时候都发送数据,两端都设有发送缓存和接受缓存。
5.面向字节流:虽然应用程序和TCP的交互式一次一个数据块,但TCP把应用程序交下来的数据块看出仅仅是一连串无结构的字节流。
TCP的连接建立与连接释放采用“三次握手四次挥手”的方式。问题:为什么要三次握手?
为什么A还要发一次确认呢?
只要是方式已失效的练接请求报文突然又传到B,因而产生错误。
所谓“以失效的练接请求报文”是这样差生的
(1)正常情况,发出练接请求,但因练接请求报文段丢失而未收到确认,于是又重传了一次请求,后来收到了确认,建立了连接,数据传输完毕后,释放了连接,A共发送了两个请求报文段,一个丢失,另一个到达了B。
(2)异常情况,即A发送的请求报文并没有丢失,而是在某些网络节点滞留了,以致到了连接释放后的某个时间才到达B,本来就是一个已失效的报文,但B收到实效的报文连接请求报文段后,误认为A再次发出新的连接请求,于是向A发送了确认报文段,同意建立连接,假定不采用三次握手,那么只要B发出确认,新的连接就建立了。
由于现在A并没有发出连接建立请求,故不会理睬B的确认,也不会发出数据,但B确一直以为新的连接建立了,一直等到A发来数据,B处于阻塞状态,并且好多资源都白白浪费了。
为什么主动发起连接释放的一端在收到对端的确认后,把确认报文段的ACK置1,确认好ACK=w+1,而自己的序号为seq=u+1,进入TIME-WAIT状态?
为了保证发送最后一个ACK报文段到达B,这个ACK报文段很可能丢失,因而是处在LAST-ACK状态的B收不到对自己已发送的FIN+ACK报文段确认的确认,B会超时重传这个FIN+ACK报文段,而A能在2MSL时间内收到这个重传的FIN+ACK报文段,接着,A重传一次确认。重新启动2MSL计时器。如果不等待2MSL,那么B就收不到重传的FIN+ACK报文段,因而也不会再一次发出确认报文段,故B就无法按正常步骤进入close状态。
防止“已失效的连接”出现在本连接中,经过2MSL,可以使连接等待的时间内所有产生的报文段都从网络中消失,这样就可以使下一个新的连接中不会出现旧的连接请求报文段。
应用层
文本传输协议FTP
FTP是目前使用最广泛的文件传送协议。FTP提供交互式的的访问,允许客户指明文件类型与格式(如指明是否使用ASCII码),并允许文件的存取权限。FTP屏蔽了计算机系统的细节,因而适合于异构网络中的任意计算机之间传送文件。
FTP与TFTP一样,都是复制整个文件,特点是:若要存取一个文件,必须先得到本地文件的一个副本,如要修改文件,必须只能对文件的副本进行修改,然后将修改后的副本传回原节点。共享协议的另一类是联机访问,意味着允许多个程序同时对一个文件进行存取,和数据库不同的是用户不需要调用一个特殊的客户进 程。而由操作系统提供对原地共享文件进行访问的服务,就如同访问本地文件系统一样。而操作系统的文件系统则提供共享文件的透明存取。有点是:将原来处于本地文件的应用程序用来处理远地文件。不需要对应用程序做明显改动。
FTP工作原理
网络环境中的一项基本应用就是将文件从一台计算机复制到另一台可能相聚很远的计算机中。看起来简单其实很复杂,原因是众多计算机厂商研制出文件系统多大百种,且差别很大,经常遇到的问题是:
(1)计算机存储数据的格式不同
(2)文件目录和文件命名格式不同
(3)对于相同的文件存取功能,操作系统使用的命令不同,
(4)访问控制方法不同。
故FTP主要功能是减少或消除在不同操作系统下处理文件的不兼容性。
FTP使用客户服务器方式,一个FTP服务器进程可同时为多个客户进程提供服务故它由一个主进程和若干个从属进程。
主进程负责:
1)打开熟知端口号(21),使客户进程能够连接得上
2)等待客户进程发出练接请求
3)启动从属进程来处理客户进程发来的请求,从属进程对客户进程请求处理完毕后即终止。但从属进程运行期间根据需要还可能创建一些其他子进程。
4)回到等待状态,继续接受其他客户进程发来的请求。主进程与从属进程的处理是并发执行的
文本传输协议TFTP
它是TCP/IP协议家族中一个简单的文本传输协议,是很小的且易于实现的文件传送协议,虽然TFTP也使用客户服务器方式,但它使用UDP数据报,因此TFTP需要有自己的差错改正措施,TFTP只支持文件传输而不支持交互。没有庞大的命令集,没有目录列表功能,也不能对用户进行身份鉴别。
TFTP的优点
1)可用于UDP环境例如:需要将程序或文件同时向许多机器下载时往往需要TFTP。
2)TFTP代码所占内存小,对于较小的计算机或者某些特殊用途的设备是很重要的,这些设备不需要硬盘,增加了灵活性,减少了开销。
TFTP的特点:
1)每次传输数据报中有512个字节的数据,但最后一次不足512个字节。
2)数据报文按需编号,从1开始。
3)支持ASCII或二进制传送。
4)可对文件进行读写
5)使用很简单的首部
远程终端协议TELNET
用户通过TELNET就可在其所在地通过TCP连接注册(即登录)到远地的另一个主机上。TELNET能使用户的击键传到远地主机。同时也能将远地输出通过TCP连接返回到用户屏幕。因此TELNET又称终端仿真控制协议。它也是客户端服务器模式。
TELNET能适应许多计算机和操作系统的差异。例如对于文本中一行的结束。有的用回车(CR),有的用换行(LF)有的用回车-换行(CR-LF)。又如中断一个程序时,有的是(ctl+c)有的用ESC,TELNET定义了数据和命令怎样通过因特网。这些定义就是所谓的网络虚拟终端NAT
超文本传输协议HTTP
万维网是分布式的超媒体系统,它是超文本系统的扩充,所谓超文本是包含指向其他文档链接的文本。
万维网使用客户服务器方式工作,万维网所主驻留的主机则运行服务器程序,因此这个主机也叫做万维服务器。客户程序向服务器发出请求,服务器程序向客户程序送回客户所需要的万维网文档。万维网必须解决以下问题:
1)怎样标志分布在整个因特网上的万维网文档
2)用什么协议来实现万维网上的各种链接
3)怎么是不同风格的万维网文档在因特网上的各种主机上显示出来,同时用户清楚再什么地方存在着链接。
4)怎样使用户很方便的找到所需信息。
解决第一个问题采用统一资源定位符URL
解决第二个问题就是超文本传输协议HTTP
解决第三个问题是超文本标记语言HTML
URL的格式:<协议>://<主机>:<端口>/<路径>
HTTP是面向事务的,它是万维网上能够可靠交换文件(包括文本,声音,图形等各种多媒体文件)重要基础。
每个万维网网点都有一个服务器进程,不断地监听TCP的端口80,以便发现是否向他发出练接请求。一旦监听到就建立TCP连接,服务器接着就返回请求页面作为响应。最后TCP连接释放了,在浏览器和服务器之间请求和响应的交互,必须按照一定规定的格式和规则,即HTTP。
用户浏览页面的方法有两种,第一种是在浏览器的地址窗口键入要找页面的URL,另一种是在某一个页面中用鼠标点击一个可选部分。
假定鼠标点击了屏幕上的可选部分,使用的链接指向了“陕西科技大学院系设置”的页面。假定URL是http://www.sust.edu.cn/chn/sust/index.htm下面使用http/1.0更具体地说明在用户点击鼠标后发生的事件:
1)浏览器分析链接指向页面URL
2)浏览器向DNS请求解析www.sust的IP地址
3)域名系统DNS解析出陕西科技大学服务器的IP地址222.24.94.92
4)浏览器与服务器建立TCP连接(服务器IP地址是222.24.94.92,端口号是80)
5)浏览器发出取文件指令:GET /chn/sust/index.htm
6)服务器www.sust.edu.cn给出响应,把文件index.htm发送给浏览器
7)释放TCP连接
8)浏览器显示“陕西科技大学院系设置”文件index.htm中的所有文本。
注:http是使用了面向连接的TCP作为传输层协议,保证了数据的可靠传输,不必考虑传输过程中被丢弃后又怎样重传,但是http本身是无连接的。
注http是无状态的,也就是说,同一个客户第二次访问同一服务器上的页面时,服务器响应与第一次访问时的相同(假定现在服务器还没有把页面更新),因为服务器并不记得曾将访问过的这个用户,也不记得为客户服务过多少次。http的无状态特性简化了服务器的设计,使服务器更容易支持大量并发的http请求。
1.http报文结构
1)开始行:用于区分是请求报文还是响应报文。请求报文中开始行叫请求行,响应报文叫状态行。
2)首部行:用来说明浏览器。服务器报文主体的一些信息,首部行有好几行,也可以不使用。
3)实体主体:在请求报文中一般不用这个字段,响应报文也可能没有这个字段。
2.http请求报文最主要的一些特点
请求报文的第一行“请求行”只有三个内容,即方法,请求资源URL,以及http版本
方法:就是对所请求对象进行的操作,这些方法其实也就是命令。
方法 |
意义 |
OPTION |
请求一些选项的信息 |
GET |
请求读取由URL所标志的信息 |
HEAD |
请求读取由URL所标志信息的首部 |
POST |
给服务器添加信息(例如:注释) |
PUT |
在指明URL下存取一个文档 |
DELETE |
删除URL所标志的资源 |
TRACE |
用来换回测试的请求报文 |
CONNECT |
用于代理服务器 |
3.在服务器上存放用户信息
由于HTTP是无状态的,这样做虽然简化了服务器的设计,但在实际工作中,一些万维网站点却常常希望能够识别用户。例如,网购时,一个客户购买多种物品,当选好一件商品放入购物车时,还要浏览其他商品因此需要记住用户的身份,使得接着选的一些商品在同一购物车内。便于结账。要做到这点,就必须可以在HTTP中使用cookie.cookie是这样工作的,用户使用某个需要使用cookie的网站时,该网站的服务器就为张三产生唯一识别码,并在以此为索引的服务器后端数据库产生一个项目。为了让用户有接受cookie的自由,例如IE6.0中,点击工具栏的“工具”按钮,找到INTERNET选项,点击“隐私”。选组织cookie,或者接受cookie。
物理层使用的中间设备叫转发器(repeater)
数据链路层使用的中间设备叫网桥(bridge)
网络层使用的中间设备叫路由器(router)
在网络层以上使用的中间设备叫做网关(Gateway)