INTERNET编程之ISO/OSI和TCP/IP模型续

来源:互联网 发布:sys socket.h windows 编辑:程序博客网 时间:2024/04/30 00:15

也许,有人会问为什么我们要建立这些模型呢.这其实很容易理解.

整个网络是一个复杂的环境,在这个环境中存在着不同的操作系统(UNIX,WINDOWS),不同的通信介质(有线,无线),不同的通信设备(通用的和专用的) ,不同的业务环境(实时,分时,批处理等).

为了解决上面的问题,和我们编程一样,在遇到复杂问题的时候,我们总是尝试着分解这个问题,使它成为更简单的一系列小问题,这样就能够解决了.因此,网络环境间的通信就采用了分层模型来解决上面的问题.

对于,每一层的不同业务,都有相应的协议.什么是协议呢.协议就是一个约定,大家都要遵守.简单的说:

协议 = 语义 + 语法 + 规则

那,我们就看看他们的规则吧:

1 通信实体之间不可以直接通信

2 各层之间单向通信.

3 上层使用下层提供的服务,下层提供服务给上层.

4 数据在从一台计算机传送数据到另一台计算机时,(不同的计算机是用IP地址来区分的),在经过每一层的时候,数据都要打包,我们称为数据封装,也就是加上协议报头,有些还添加尾部.在到达另一台计算机时,再逆方向解包处理.这些包.

具体来说是:

OSI参考模型中,对等层协议之间交换的信息单元统称为协议数据单元(PDU,Protocol Data Unit)。
OSI参考模型中每一层都要依靠下一层提供的服务。
为了提供服务,下层把上层的PDU作为本层的数据封装,然后加入本层的头部(和尾部)。头部中含有完成数据传输所需的控制信息。
这样,数据自上而下递交的过程实际上就是不断封装的过程。到达目的地后自下而上递交的过程就是不断拆封的过程。由此可知,在物理线路上传输的数据,其外面实际上被包封了多层“信封”。
但是,某一层只能识别由对等层封装的“信封”,而对于被封装在“信封”内部的数据仅仅是拆封后将其提交给上层,本层不作任何处理。

5.端口:

按照OSI七层模型的描述,传输层提供进程(应用程序)通信的能力。为 了标识通信实体中进行通信的进程(应用程序),TCP/IP协议提出了协议端口(protocol port,简称端口)的概念。
端口是一种抽象的软件结构(包括一些数据结构和I/O缓冲区)。应用程序通过系统调用与某端口建立连接(binding)后,传输层传给该端口的数据都被相应的进程所接收,相应进程发给传输层的数据都通过该端口输出。
端口用一个整数型标识符来表示,即端口号。端口号跟协议相关,TCP/IP传输层的两个协议TCP和UDP是完全独立的两个软件模块,因此各自的端口号也相互独立。
端口使用一个16位的数字来表示,它的范围是0~65535,1024以下的端口号保留给预定义的服务。例如:http使用80端口。

基本上就这些了.当然了,某些是COPY的,懒得写的嘛!

接下来写一下各层常用协议吧:

1 应用层:

远程登录协议Telnet、文件传输协议FTP、 超文本传输协议HTTP、域名服务DNS、简单邮件传输协议SMTP、邮局协议POP3。
2 传输层:

传输控制协议TCP、用户数据报协议UDP。
               TCP:面向连接的可靠的传输协议。
               UDP:是无连接的,不可靠的传输协议。
3 网络层:

网际协议IP、Internet互联网控制报文协议ICMP、Internet组管理协议IGMP。

4.数据链路层和物理层:

地址解析协议和逆地址解析协议等

说实话,这些东西,我也不清楚.也只是在用的时候才会去了解,写在这里,是为了方便以后查找用的.呵呵

下回,我们就进入SOCKET编程吧.


 

n

原创粉丝点击