没有合适的资源?快使用搜索试试~ 我知道了~
资源详情
资源评论
资源推荐
计算机网络体系结构
开放系统互连参考模型 (Open System Interconnect 简称 OSI)是国际标准化组织(ISO)和国际
电报电话咨询委员会(CCITT)联合制定的开放系统互连参考模型,为开放式互连信息系统提供
了一种功能结构的框架。其目的是为异种计算机互连提供一个共同的基础和标准框架,并为
保持相关标准的一致性和兼容性提供共同的参考。这里所说的开放系统,实质上指的是遵循
OSI 参考模型和相关协议能够实现互连的具有各种应用目的的计算机系统。
OSI 采用了分层的结构化技术,共分七层,物理层、数据链路层、网络层、传输层、会话层、
表示层、应用层。
OSI 七层模型各层的作用
物理层并不是物理媒体本身,它只是开放系统中利用物理媒体实现物理连接的功能描述和执
行连接的规程。
物理层的媒体包括架空明线、平衡电缆、光纤、无线信道等。通信用的互连设备指 DTE(Data
Terminal Equipment)和 DCE(Data Communications Equipment)间的互连设备。DTE 即数据
终端设备,又称物理设备,如计算机、终端等都包括在内。而 DCE 则是数据通信设备或电
路连接设备,如调制解调器等。数据传输通常是经过 DTE-DCE,再经过 DCE-DTE 的路径。互
连设备指将 DTE、DCE 连接起来的装置,如各种插头、插座。LAN 中的各种粗、细同轴电缆、
T 型接头、插头、接收器、发送器、中继器等都属物理层的媒体和连接器。
物理层的主要功能是:
① 为数据端设备提供传送数据的通路,数据通路可以是一个物理媒体,也可以是多个物理
媒体连接而成。一次完整的数据传输,包括激活物理连接、传送数据和终止物理连接。
所谓激活,就是不管有多少物理媒体参与,都要在通信的两个数据终端设备间连接起来,
形成一条通路。
② ②传输数据。物理层要形成适合数据传输需要的实体,为数据传送服务。一是要保证数
据能在其上正确通过,二是要提供足够的带宽(带宽是指每秒钟内能通过的比特(Bit)数),
以减少信道上的拥塞。传输数据的方式能满足点到点,一点到多点,串行或并行,半双
工或全双工,同步或异步传输的需要。
数据链路可以粗略地理解为数据通道。物理层要为终端设备间的数据通信提供传输介质及其
连接。介质是长期的,连接是有生存期的。在连接生存期内,收发两端可以进行不等的一次
或多次数据通信。每次通信都要经过建立通信联络和拆除通信联络两个过程。这种建立起来
的数据收发关系就叫做数据链路。而在物理媒体上传输的数据难免受到各种不可靠因素的影
响而产生差错,为了弥补物理层上的不足,为上层提供无差错的数据传输,就要能对数据进
行检错和纠错。链路层应具备如下功能:
链路连接的建立、拆除和分离;
差错检测和恢复。还有链路标识,流量控制等等。
独立的链路产品中最常见的当属网卡,网桥也是链路产品。
网络层,当数据终端增多时。它们之间有中继设备相连,此时会出现一台终端要求不只是与
惟一的一台而是能和多台终端通信的情况,这就产生了把任意两台数据终端设备的数据链接
起来的问题,也就是路由或者叫寻径。另外,当一条物理信道建立之后,被一对用户使用,
往往有许多空闲时间被浪费掉。人们自然会希望让多对用户共用一条链路,为解决这一问题
就出现了逻辑信道技术和虚拟电路技术。
传输层有一个既存事实,即世界上各种通信子网在性能上存在着很大差异。例如电话交换网,
分组交换网,公用数据交换网,局域网等通信子网都可互连,但它们提供的吞吐量,传输速
率,数据延迟通信费用各不相同。对于会话层来说,却要求有一性能恒定的界面。传输层就
承担了这一功能。
会话层会话单位的控制层,其主要功能是按照在应用进程之间约定的原则,按照正确的顺序
收、发数据,进行各种形态的对话。会话层规定了会话服务用户间会话连接的建立和拆除规
程以及数据传送规程。
会话层提供的服务是应用建立和维持会话,并能使会话获得同步。会话层使用校验点可使通
信会话在通信失效时从校验点继续恢复通信。这种能力对于传送大的文件极为重要。
表示层其主要功能是把应用层提供的信息变换为能够共同理解的形式,提供字符代码、数据
格式、控制信息格式、加密等的统一表示。表示层的作用之一是为异种机通信提供一种公共
语言,以便能进行互操作。这种类型的服务之所以需要,是因为不同的计算机体系结构使用
的数据表示法不同。例如,IBM 主机使用 EBCDIC 编码,而大部分 PC 机使用的是 ASCII 码。
在这种情况下,便需要表示层来完成这种转换。
应用层向应用程序提供服务,这些服务按其向应用程序提供的特性分成组,并称为服务元素。
有些可为多种应用程序共同使用,有些则为较少的一类应用程序使用。应用层是开放系统的
最高层,是直接为应用进程提供服务的。其作用是在实现多个系统应用进程相互通信的同时,
完成一系列业务处理所需的服务。
TCP/IP 协议
通俗而言:TCP 负责发现传输的问题,一有问题就发出信号,要求重新传输,直到所有数据
安全正确地传输到目的地。而 IP 是给因特网的每一台联网设备规定一个地址。
TCP 和 UDP
TCP
TCP 是面向连接的通信协议,通过三次握手建立连接,通讯完成时要拆除连接,由于 TCP 是
面向连接的所以只能用于端到端的通讯。
TCP 提供的是一种可靠的数据流服务,采用“带重传的肯定确认”技术来实现传输的可靠性。
TCP 还采用一种称为“滑动窗口”的方式进行流量控制,所谓窗口实际表示接收能力,用以限
制发送方的发送速度。
如果 IP 数据包中有已经封好的 TCP 数据包,那么 IP 将把它们向‘上’传送到 TCP 层。TCP 将包
排序并进行错误检查,同时实现虚电路间的连接。TCP 数据包中包括序号和确认,所以未按
照顺序收到的包可以被排序,而损坏的包可以被重传。
TCP 将它的信息送到更高层的应用程序,例如 Telnet 的服务程序和客户程序。应用程序轮流
将信息送回 TCP 层,TCP 层便将它们向下传送到 IP 层,设备驱动程序和物理介质,最后到
接收方。
面向连接的服务(例如 Telnet、FTP、rlogin、X Windows 和 SMTP)需要高度的可靠性,所以
它们使用了 TCP。DNS 在某些情况下使用 TCP(发送和接收域名数据库),但使用 UDP 传送
有关单个主机的信息。
UDP
UDP 是面向无连接的通讯协议,UDP 数据包括目的端口号和源端口号信息,由于通讯不需要
连接,所以可以实现广播发送。
UDP 通讯时不需要接收方确认,属于不可靠的传输,可能会出现丢包现象,实际应用中要求
程序员编程验证。
UDP 与 TCP 位于同一层,但它不管数据包的顺序、错误或重发。因此,UDP 不被应用于那
些使用虚电路的面向连接的服务,UDP 主要用于那些面向查询---应答的服务,例如 NFS。相
对于 FTP 或 Telnet,这些服务需要交换的信息量较小。使用 UDP 的服务包括 NTP(网络时间
协议)和 DNS(DNS 也使用 TCP),包总量较少的通信(DNS、SNMP 等);2.视频、音频等多
媒体通信(即时通信);3.限定于 LAN 等特定网络中的应用通信;4.广播通信(广播、多
播)。
常用 QQ,就是一个以 UDP 为主,TCP 为辅的通讯协议。
TCP 和 UDP 的优缺点
无法简单地、绝对地去做比较:TCP 用于在传输层有必要实现可靠传输的情况;而在一方面,
UDP 主要用于那些对高速传输和实时性有较高要求的通信或广播通信。TCP 和 UDP 应该
根据应用的目的按需使用。
端口号
数据链路和 IP 中的地址,分别指的是 MAC 地址和 IP 地址。前者用来识别同一链路中不
同的计算机,后者用来识别 TCP/IP 网络中互连的主机和路由器。在传输层也有这种类似于
地址的概念,那就是端口号。端口号用来识别同一台计算机中进行通信的不同应用程序。因
此,它也被称为程序地址。
一台计算机上同时可以运行多个程序。传输层协议正是利用这些端口号识别本机中正在进行
通信的应用程序,并准确地将数据传输。
端口号的确定
� 标准既定的端口号:这种方法也叫静态方法。它是指每个应用程序都有其指定的端
口号。但并不是说可以随意使用任何一个端口号。例如 HTTP、FTP、TELNET 等广为
使用的应用协议中所使用的端口号就是固定的。这些端口号被称为知名端口号,分
布在 0~1023 之间;除知名端口号之外,还有一些端口号被正式注册,它们分布在
1024~49151 之间,不过这些端口号可用于任何通信用途。
� 时序分配法:服务器有必要确定监听端口号,但是接受服务的客户端没必要确定端
口号。在这种方法下,客户端应用程序完全可以不用自己设置端口号,而全权交给
操作系统进行分配。动态分配的端口号范围在 49152~65535 之间。
三次握手(重点)
TCP 提供面向有连接的通信传输。面向有连接是指在数据通信开始之前先做好两端之间的准
备工作。
所谓三次握手是指建立一个 TCP 连接时需要客户端和服务器端总共发送三个包以确认连接
的建立。在 socket 编程中,这一过程由客户端执行 connect 来触发。
第一次握手:客户端将标志位 SYN 置为 1,随机产生一个值 seq=J,并将该数据包发送给服
务器端,客户端进入 SYN_SENT 状态,等待服务器端确认。
第二次握手:服务器端收到数据包后由标志位 SYN=1 知道客户端请求建立连接,服务器端
将标志位 SYN 和 ACK 都置为 1,ack=J+1,随机产生一个值 seq=K,并将该数据包发送给客户
端以确认连接请求,服务器端进入 SYN_RCVD 状态。
第三次握手:客户端收到确认后,检查 ack 是否为 J+1,ACK 是否为 1,如果正确则将标志
位 ACK 置为 1,ack=K+1,并将该数据包发送给服务器端,服务器端检查 ack 是否为 K+1,ACK
是否为 1,如果正确则连接建立成功,客户端和服务器端进入 ESTABLISHED 状态,完成三次
握手,随后客户端与服务器端之间可以开始传输数据了。
四次挥手
四次挥手即终止 TCP 连接,就是指断开一个 TCP 连接时,需要客户端和服务端总共发送 4
个包以确认连接的断开。在 socket 编程中,这一过程由客户端或服务端任一方执行 close 来
触发。
由于 TCP 连接是全双工的,因此,每个方向都必须要单独进行关闭,这一原则是当一方完成
数据发送任务后,发送一个 FIN 来终止这一方向的连接,收到一个 FIN 只是意味着这一方向
上没有数据流动了,即不会再收到数据了,但是在这个 TCP 连接上仍然能够发送数据,直到
这一方向也发送了 FIN。首先进行关闭的一方将执行主动关闭,而另一方则执行被动关闭。
1. 客户端进程发出连接释放报文,并且停止发送数据。释放数据报文首部,FIN=1,其
序列号为 seq=u(等于前面已经传送过来的数据的最后一个字节的序号加 1),此时,
客户端进入 FIN-WAIT-1(终止等待 1)状态。 TCP 规定,FIN 报文段即使不携带数据,
也要消耗一个序号。
2. 服务器收到连接释放报文,发出确认报文,ACK=1,ack=u+1,并且带上自己的序列
号 seq=v,此时,服务端就进入了 CLOSE-WAIT(关闭等待)状态。TCP 服务器通知
高层的应用进程,客户端向服务器的方向就释放了,这时候处于半关闭状态,即客
户端已经没有数据要发送了,但是服务器若发送数据,客户端依然要接受。这个状
态还要持续一段时间,也就是整个 CLOSE-WAIT 状态持续的时间。
3. 客户端收到服务器的确认请求后,此时,客户端就进入 FIN-WAIT-2(终止等待 2)
状态,等待服务器发送连接释放报文(在这之前还需要接受服务器发送的最后的数
据)。
4. 服务器将最后的数据发送完毕后,就向客户端发送连接释放报文,FIN=1,ack=u+1,
由于在半关闭状态,服务器很可能又发送了一些数据,假定此时的序列号为 seq=w,
此时,服务器就进入了 LAST-ACK(最后确认)状态,等待客户端的确认。
5. 客户端收到服务器的连接释放报文后,必须发出确认,ACK=1,ack=w+1,而自己的
序列号是 seq=u+1,此时,客户端就进入了 TIME-WAIT(时间等待)状态。注意此时
TCP 连接还没有释放,必须经过 2∗∗MSL(最长报文段寿命)的时间后,当客户端撤
销相应的 TCB 后,才进入 CLOSED 状态。
6. 服务器只要收到了客户端发出的确认,立即进入 CLOSED 状态。同样,撤销 TCB 后,
就结束了这次的 TCP 连接。可以看到,服务器结束 TCP 连接的时间要比客户端早一
些。
TCP/IP 中的数据包
每个分层中,都会对所发送的数据附加一个首部,在这个首部中包含了该层必要的信息,如
发送的目标地址以及协议相关信息。通常,为协议提供的信息为包首部,所要发送的内容为
数据。在下一层的角度看,从上一层收到的包全部都被认为是本层的数据。
网络中传输的数据包由两部分组成:一部分是协议所要用到的首部,另一部分是上一层传过
来的数据。首部的结构由协议的具体规范详细定义。在数据包的首部,明确标明了协议应该
如何读取数据。反过来说,看到首部,也就能够了解该协议必要的信息以及所要处理的数据。
� ① 应用程序处理
首先应用程序会进行编码处理,这些编码相当于 OSI 的表示层功能;
编码转化后,邮件不一定马上被发送出去,这种何时建立通信连接何时发送数据的管理功能,
相当于 OSI 的会话层功能。
� ② TCP 模块的处理
TCP 根据应用的指示,负责建立连接、发送数据以及断开连接。TCP 提供将应用层发来的
数据顺利发送至对端的可靠传输。为了实现这一功能,需要在应用层数据的前端附加一个
TCP 首部。
� ③ IP 模块的处理
IP 将 TCP 传过来的 TCP 首部和 TCP 数据合起来当做自己的数据,并在 TCP 首部的前端
加上自己的 IP 首部。IP 包生成后,参考路由控制表决定接受此 IP 包的路由或主机。
� ④ 网络接口(以太网驱动)的处理
从 IP 传过来的 IP 包对于以太网来说就是数据。给这些数据附加上以太网首部并进行发送
处理,生成的以太网数据包将通过物理层传输给接收端。
� ⑤ 网络接口(以太网驱动)的处理
主机收到以太网包后,首先从以太网包首部找到 MAC 地址判断是否为发送给自己的包,若
不是则丢弃数据。
如果是发送给自己的包,则从以太网包首部中的类型确定数据类型,再传给相应的模块,如
IP、ARP 等。这里的例子则是 IP 。
� ⑥ IP 模块的处理
IP 模块接收到 数据后也做类似的处理。从包首部中判断此 IP 地址是否与自己的 IP 地址
匹配,如果匹配则根据首部的协议类型将数据发送给对应的模块,如 TCP、UDP。这里的例
子则是 TCP。
另外吗,对于有路由器的情况,接收端地址往往不是自己的地址,此时,需要借助路由控制
表,在调查应该送往的主机或路由器之后再进行转发数据。
� ⑦ TCP 模块的处理
在 TCP 模块中,首先会计算一下校验和,判断数据是否被破坏。然后检查是否在按照序号
剩余21页未读,继续阅读
阿葱的葱白
- 粉丝: 26
- 资源: 313
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0