‘壹’ 怎样算得上熟悉 TCP/IP 协议编程
抓包
先从熟悉的下手,HTTP,FTP。
封装包
自己封装包,和现有协议通信。TCP/IP协议作为一个底层协议,不仅可以编写聊天程序,很多高层协议都是基于TCP/IP编写的。
自己造轮子,这样也有助于理解其它协议,比如连接、查询MySQL(用Socekt函数而不是库函数),自己封装一个memched函数库…
以前我大学时用perl发送“飞鸽传书”包,经常上课的时候同学们集体收到弹出信息,却不知道发送者是谁,很有成就感。如果你做已经事没有成就感,就很快会失去动力。
他山之石
经常去github。
源码
读读TCP/IP协议的实现代码,去翻翻 Linux 1.0 源码。
能进行网络编程
1.如果你说你会select,epoll,iocp模型,那会让对方觉得更靠谱
2.如果你说出你做过im,下载之类那会让对方来兴趣.
3.如果你说设计了通讯协议,会让对方觉得更贴切
4.如果你说做过,熟悉, ftp http snmp smtp 这些简单的老古董协议,会加分,但不大.
5.如果你说熟悉bt,emule,udt等协议,那会对你很有好感.
6.如果你说你破解过某大牌 qq,360内某通讯协议,那会对你加分很大.
目测楼主在0.5的位置,嘿嘿
我对熟悉的定义是:闭着眼能想起原理和实现,能和其他人侃侃而谈,能在搜索的帮助下,不慢的整出来.
精通的定义是:观点一针见血,实现一挥而就.
1)熟悉TCP/IP协议族的基本原理
IP地址的分类,定义,获得,大概的管理方法
TCP、UDP等主要协议的特点,主要格式,以及重要字段在协议交互中起到的作用。
2)对于简单的TCP/IP协议导致的问题,有基本的判断
熟悉网络问题的解决方法,一个问题,应该是由上而下(top-button),还是由下而上(button-top)来分析?
3)基本的编程知识。
在系统内,构建简单通信。
在系统间,构建简单的通信。
熟悉系统内的API,知道在什么时候,改使用哪些API协调工作。
能够熟练使用这些API,在系统间传递信息,文件。
能够熟练使用这些API,实现自己的简单的私有协议。
4)进阶编程知识
知道一两个已经封装好的框架(framwork),它们之间的差别。
使用一个框架,写过能正常工作的程序。
知道网络协议处理也是要讲究性能的,知道性能的瓶颈会在什么地方产生。
能有较好的设计技巧,将私有协议设计得更加具有弹性,优雅。
熟悉系统间协议处理的细微的差异,以及将会对业务造成的影响,时延、状态不一致、自定义字段、、、、、
5)熟练阶段的知识
针对业务的需求,快速选型,定框架。
不再认为多线程是万能的。
知道稳定性比性能更加重要。
数据包去了哪儿,不用看代码,也能预估出来。
6)源代码是最好的老师,永远都是。
‘贰’ 网络方案设计过程主要分哪几个步骤
步骤如下:
1,需求调研
2,需求分析
3,概要设计
4,详细设计
设计方案内容包括:网络拓扑、IP地址规划、网络设备选型等等。
(2)网络编程与分层协议设计扩展阅读:
网络工程设计原则
网络信息工程建设目标关系到现在和今后的几年内用户方网络信息化水平和网上应用系统的成败。在工程设计前对主要设计原则进行选择和平衡,并排定其在方案设计中的优先级,对网络工程设计和实施将具有指导意义。
1,实用、好用与够用性原则
计算机与外设、服务器和网络通信等设备在技术性能逐步提升的同时,其价格却在逐年或逐季下降,不可能也没必要实现所谓“一步到位”。所以,网络方案设计中应采用成熟可靠的技术和设备,充分体现“够用”、“好用”、“实用”建网原则,切不可用“今天”的钱,买“明、后天”才可用得上的设备。
2,开放性原则
网络系统应采用开放的标准和技术,资源系统建设要采用国家标准,有些还要遵循国际标准(如:财务管理系统、电子商务系统)。其目的包括两个方面:第一,有利于网络工程系统的后期扩充;第二,有利于与外部网络互连互通,切不可“闭门造车”形成信息化孤岛。
3,可靠性原则
无论是企业还是事业,也无论网络规模大小,网络系统的可靠性是一个工程的生命线。比如,一个网络系统中的关键设备和应用系统,偶尔出现的死锁,对于政府、教育、企业、税务、证券、金融、铁路、民航等行业产生的将是灾难性的事故。因此,应确保网络系统很高的平均无故障时间和尽可能低的平均无故障率。
4, 安全性原则
网络的安全主要是指网络系统防病毒、防黑客等破坏系统、数据可用性、一致性、高效性、可信赖性及可靠性等安全问题。为了网络系统安全,在方案设计时,应考虑用户方在网络安全方面可投入的资金,建议用户方选用网络防火墙、网络防杀毒系统等网络安全设施;网络信息中心对外的服务器要与对内的服务器隔离。
5, 先进性原则
网络系统应采用国际先进、主流、成熟的技术。比如,局域网可采用千兆以太网和全交换以太网技术。视网络规模的大小(比如网络中连接机器的台数在250台以上时),选用多层交换技术,支持多层干道传输、生成树等协议。
6,易用性原则
网络系统的硬件设备和软件程序应易于安装、管理和维护。各种主要网络设备,比如核心交换机、汇聚交换机、接入交换机、服务器、大功率长延时UPS等设备均要支持流行的网管系统,以方便用户管理、配置网络系统。
7,可扩展性原则
网络总体设计不仅要考虑到近期目标,也要为网络的进一步发展留有扩展的余地,因此要选用主流产品和技术。若有可能,最好选用同一品牌的产品,或兼容性好的产品。在一个系统中切不可选用技术和性能不兼容的产品。
‘叁’ 网络编程和协议问题,答得好再追300分啊!骗人我死!
UDP仅仅是帮助你把客户端和服务端之间需要通信的内容尽可能的传输到对方。而这通信内容随便你怎么设定,你可以设定为一个字符串,或者设定为遵循一定协议的数据。
就你上面提的问题“你要涉及协议”,那么需要做的工作就是通信前按照协议封装协议,通信后解析协议。
‘肆’ 怎么系统的自学网络编程(底层协议)
用java来实现网络编程是很容易的,可以作为网络编程的入门。使用C++和winsock相对复杂一些。
总之看实际需要了。
你好初学网络编程者可以从以下几个步骤开展:
1)下载一个可以互动的学习工具,通过这个与这个工具互动,我们可以及时的学到每个api的结果如果。
对于有c/c++或java基础的朋友通过一两个礼拜的时间就可以上手了,另外个人建议初学者可以学习dive into python。
2)掌握网络编程中会用到的几个基本概念和内涵,比如IP地址,port号,socket等
3)记住和消化网络编程C/S模型,把server和client端编程的常用模式理解和消化
4)花几天时间学习socket api集,api集可以分为下面几大类:创建 socket bind listen accept收发 read/recv/recvfrom write/send/sendto关闭 close shutdown参数 getsockopt/setsockopt地址 gethostbyaddr getaddrbyhost,...在学习这些api时候,可以先关注在函数功能,参数意义上
5)结合python互动平台,实践socket api的用法,比如socket函数怎么使用,bind怎么使用等等。在互动过程中,我们可以变换参数,看看调用结果如何。比如,创建一个tcp socket的语法如下:socket(AF_INET,SOCK_STREAM)创建一个udp socket的语法如下:socket(AF_INET,SOCK_DGRAM)
6)学习socket server端编程实现简单规约比如echo,time等,然后通过cmd中的telnet来测试。
7)学习I/O模型,比如阻塞、非阻塞和反应式(select,poll,WaitForMultipleObject)等
8)学习Richard Stevens的《Unix网络编程》,深入学习其中的api原理以及服务端设计原理,并通过代码编写。
9)下载高性能网络编程框架twisted,笔者强烈推荐,它将使你的网络编程效率提高10倍以上。
10)学习设计模式、操作系统知识比如线程、进程、同步等。
‘伍’ 老师的作业,网络协议包含哪些等
1. 关于计算机网络的定义。
答:广义的观点:计算机技术与通信技术相结合,实现远程信息处理或进一步达到资源共享的系统;资源共享的观点:以能够相互共享资源的方式连接起来,并且各自具有独立功能的计算机系统的集合;对用户透明的观点:存在一个能为用户自动管理资源的网络操作系统,由它来调用完成用户任务所需要的资源,而整个网络像一个大的计算机系统一样对用户是透明的,实际上这种观点描述的是一个分布式系统。
2. 计算机网络的拓朴结构。
答:计算机网络采用拓朴学的研究方法,将网络中的设备定义为结点,把两个设备之间的连接线路定义为链路。计算机网络也是由一组结点和链路组成的的几何图形,这就是拓朴结构。
分类:按信道类型分,分为点---点线路通信子网和广播信道的通信子网。采用点——点连线的通信子网的基本结构有四类:星状、环状、树状和网状;广播信道通子网有总线状、环状和无线状。
3. 计算机网络的体系结构
答:将计算机网络的层次结构模型和分层协议的集合定义为计算机网络体系结构。
4.计算机网络的协议三要素
答:三要素是:1,语法:关于诸如数据格式及信号电平等的规定;2,语义:关于协议动作和差错处理等控制信息;3,定时:包含速率匹配和排序等。
5.OSI七层协议体系结构和各级的主要作用
答:七层指:由低到高,依次是物理层,数据链路层,网络层,传输层,会话层,表示层和应用层。各层作用分别是:
物理层:向上与数据链路层相连,向下直接连接传输介质。提供一些建立、维持和释放物理连接的方法,以便能在两个或多个数据链路实体间进行数据位流的传输。
数据链路层:通过差错控制、流量控制等,将不可靠的物理传输信道变成无差错的可靠的数据链路。将数据组成适合正确传输的帧形式的数据单元,对网络层屏蔽物理层的特性和差异,使高层协议不必考虑物理传输介质的可靠性问题。
网络层:决定数据在通信子网中的传送路径,控制通信子网中的数据流量并防止拥塞等,提供建立、维护和终止网络连接的手段。网络层是通信子网的最高层。
传输层:为源主机到目的主机提供可靠的、有效的数据传输,这种传输与网络无关,传输层是独立于物理网络的。其上层协议不必了解实际网络,就可将数据安全可靠地传送到目的地。
会话层:建立、维护和同步进行通信的高层之间的对话。服务主要是:协调应用程序之间的连接建立和中断;为数据交互提供同步点;协调通信双方谁可在何时发送数据;确保数据交换在会话关闭之前完成等。
表示层:把源端机器的数据编码成适合于传输的比特序列,传送到目的端后再进行解码,在保持数据含义不变的条件下,转换成用户所理解的形式。
应用层:为用户的应用进程访问OSI环境提供服务。
6.TCP/IP协议体系结构
答:TCP/IP是一个协议系列,目前已饮食了100多个协议,用于将各种计算机和数据通信设备组成计算机网络。
TCP/IP协议具有如下特点:1,协议标准具有开放性,其独立于特定的计算机硬件与操作系统,可以免费使用;2,统一分配网络地址,使得整个TCP/IP设备在网络中都具有惟一的IP地址。
分层:应用层(SMTP, DNS, NFS, FTP, Telnet, Others)、传输层(TCP,UDP)、互联层(IP,ICMP, ARP, RARP)、主机——网络层(Ethernet, ARPANET, PDN ,Others)。
传输控制协议TCP:定义了两台计算机之间进行可靠数据传输所交换的数据和确认信息的格式,以及计算机为了确保数据的正确到达而采取的措施。
‘陆’ 计算机网络中七层协议如何掌握并理解.
OSI七层模型介绍
OSI是一个开放性的通行系统互连参考模型,他是一个定义的非常好的协议规范。OSI模型有7层结构,每层都可以有几个子层。下面我简单的介绍一下这7层及其功能。
OSI的7层从上到下分别是
7 应用层
6 表示层
5 会话层
4 传输层
3 网络层
2 数据链路层
1 物理层
其中高层,既7、6、5、4层定义了应用程序的功能,下面3层,既3、2、1层主要面向通过网络的端到端的数据流。下面我给大家介绍一下这7层的功能:
(1)应用层:与其他计算机进行通讯的一个应用,它是对应应用程序的通信服务的。例如,一个没有通信功能的字处理程序就不能执行通信的代码,从事字处理工作的程序员也不关心OSI的第7层。但是,如果添加了一个传输文件的选项,那么字处理器的程序员就需要实现OSI的第7层。示例:telnet,HTTP,FTP,WWW,NFS,SMTP等。
(2)表示层:这一层的主要功能是定义数据格式及加密。例如,FTP允许你选择以二进制或ASII格式传输。如果选择二进制,那么发送方和接收方不改变文件的内容。如果选择ASII格式,发送方将把文本从发送方的字符集转换成标准的ASII后发送数据。在接收方将标准的ASII转换成接收方计算机的字符集。示例:加密,ASII等。
(3)会话层:他定义了如何开始、控制和结束一个会话,包括对多个双向小时的控制和管理,以便在只完成连续消息的一部分时可以通知应用,从而使表示层看到的数据是连续的,在某些情况下,如果表示层收到了所有的数据,则用数据代表表示层。示例:RPC,SQL等。
(4)传输层:这层的功能包括是否选择差错恢复协议还是无差错恢复协议,及在同一主机上对不同应用的数据流的输入进行复用,还包括对收到的顺序不对的数据包的重新排序功能。示例:TCP,UDP,SPX。
(5)网络层:这层对端到端的包传输进行定义,他定义了能够标识所有结点的逻辑地址,还定义了路由实现的方式和学习的方式。为了适应最大传输单元长度小于包长度的传输介质,网络层还定义了如何将一个包分解成更小的包的分段方法。示例:IP,IPX等。
(6)数据链路层:他定义了在单个链路上如何传输数据。这些协议与被讨论的歌种介质有关。示例:ATM,FDDI等。
(7)物理层:OSI的物理层规范是有关传输介质的特性标准,这些规范通常也参考了其他组织制定的标准。连接头、针、针的使用、电流、电流、编码及光调制等都属于各种物理层规范中的内容。物理层常用多个规范完成对所有细节的定义。示例:Rj45,802.3等。
OSI分层的优点:
(1)人们可以很容易的讨论和学习协议的规范细节。
(2)层间的标准接口方便了工程模块化。
(3)创建了一个更好的互连环境。
(4)降低了复杂度,使程序更容易修改,产品开发的速度更快。
(5)每层利用紧邻的下层服务,更容易记住个层的功能。
大多数的计算机网络都采用层次式结构,即将一个计算机网络分为若干层次,处在高层次的系统仅是利用较低层次的系统提供的接口和功能,不需了解低层实现该功能所采用的算法和协议;较低层次也仅是使用从高层系统传送来的参数,这就是层次间的无关性。因为有了这种无关性,层次间的每个模块可以用一个新的模块取代,只要新的模块与旧的模块具有相同的功能和接口,即使它们使用的算法和协议都不一样。
网络中的计算机与终端间要想正确的传送信息和数据,必须在数据传输的顺序、数据的格式及内容等方面有一个约定或规则,这种约定或规则称做协议。网络协议主要有三个组成部分:
1、语义:
是对协议元素的含义进行解释,不同类型的协议元素所规定的语义是不同的。例如需要发出何种控制信息、完成何种动作及得到的响应等。
2、语法:
将若干个协议元素和数据组合在一起用来表达一个完整的内容所应遵循的格式,也就是对信息的数据结构做一种规定。例如用户数据与控制信息的结构与格式等。
3、时序:
对事件实现顺序的详细说明。例如在双方进行通信时,发送点发出一个数据报文,如果目标点正确收到,则回答源点接收正确;若接收到错误的信息,则要求源点重发一次。
70年代以来,国外一些主要计算机生产厂家先后推出了各自的网络体系结构,但它们都属于专用的。
为使不同计算机厂家的计算机能够互相通信,以便在更大的范围内建立计算机网络,有必要建立一个国际范围的网络体系结构标准。
国际标准化组织ISO 于1981年正式推荐了一个网络系统结构----七层参考模型,叫做开放系统互连模型(Open System Interconnection,OSI)。由于这个标准模型的建立,使得各种计算机网络向它靠拢, 大大推动了网络通信的发展。
OSI 参考模型将整个网络通信的功能划分为七个层次,见图1。它们由低到高分别是物理层(PH)、链路层(DL)、网络层(N)、传输层(T)、会议层(S)、表示层(P)、应用层(A)。每层完成一定的功能,每层都直接为其上层提供服务,并且所有层次都互相支持。第四层到第七层主要负责互操作性,而一层到三层则用于创造两个网络设备间的物理连接.
1.物理层
物理层是OSI的第一层,它虽然处于最底层,却是整个开放系统的基础。物理层为设备之间的数据通信提供传输媒体及互连设备,为数据传输提供可靠的环境。
1.1媒体和互连设备
物理层的媒体包括架空明线、平衡电缆、光纤、无线信道等。通信用的互连设备指DTE和DCE间的互连设备。DTE既数据终端设备,又称物理设备,如计算机、终端等都包括在内。而DCE则是数据通信设备或电路连接设备,如调制解调器等。数据传输通常是经过DTE——DCE,再经过DCE——DTE的路径。互连设备指将DTE、DCE连接起来的装置,如各种插头、插座。LAN中的各种粗、细同轴电缆、T型接、插头,接收器,发送器,中继器等都属物理层的媒体和连接器。
1.2物理层的主要功能
1.2.1为数据端设备提供传送数据的通路,数据通路可以是一个物理媒体,也可以是多个物理媒体连接而成.一次完整的数据传输,包括激活物理连接,传送数据,终止物理连接.所谓激活,就是不管有多少物理媒体参与,都要在通信的两个数据终端设备间连接起来,形成一条通路.
1.2.2传输数据.物理层要形成适合数据传输需要的实体,为数据传送服务.一是要保证数据能在其上正确通过,二是要提供足够的带宽(带宽是指每秒钟内能通过的比特(BIT)数),以减少信道上的拥塞.传输数据的方式能满足点到点,一点到多点,串行或并行,半双工或全双工,同步或异步传输的需要.
1.3物理层的一些重要标准
物理层的一些标准和协议早在OSI/TC97/C16 分技术委员会成立之前就已制定并在应用了,OSI也制定了一些标准并采用了一些已有的成果.下面将一些重要的标准列出,以便读者查阅.ISO2110:称为"数据通信----25芯DTE/DCE接口连接器和插针分配".它与EIA(美国电子工
业协会)的"RS-232-C"基本兼容。ISO2593:称为"数据通信----34芯DTE/DCE----接口连接器和插针分配"。ISO4092:称为"数据通信----37芯DTE/DEC----接口连接器和插针分配".与EIARS-449兼容。CCITT V.24:称为"数据终端设备(DTE)和数据电路终接设备之间的接口电路定义表".其功能与EIARS-232-C及RS-449兼容于100序列线上.
2.数据链路层
数据链路可以粗略地理解为数据通道。物理层要为终端设备间的数据通信提供传输媒体及其连接.媒体是长期的,连接是有生存期的.在连接生存期内,收发两端可以进行不等的一次或多次数据通信.每次通信都要经过建立通信联络和拆除通信联络两过程.这种建立起来的数据收发关系就叫作数据链路.而在物理媒体上传输的数据难免受到各种不可靠因素的影响而产生差错,为了弥补物理层上的不足,为上层提供无差错的数据传输,就要能对数据进行检错和纠错.数据链路的建立,拆除,对数据的检错,纠错是数据链路层的基本任务。
2.1链路层的主要功能
链路层是为网络层提供数据传送服务的,这种服务要依靠本层具备的功能来实现。链路层应具备如下功能:
2.1.1链路连接的建立,拆除,分离。
2.1.2帧定界和帧同步。链路层的数据传输单元是帧,协议不同,帧的长短和界面也有差别,但无论如何必须对帧进行定界。
2.1.3顺序控制,指对帧的收发顺序的控制。
2.1.4差错检测和恢复。还有链路标识,流量控制等等.差错检测多用方阵码校验和循环码校验来检测信道上数据的误码,而帧丢失等用序号检测.各种错误的恢复则常靠反馈重发技术来完成。
2.2数据链路层的主要协议
数据链路层协议是为发对等实体间保持一致而制定的,也为了顺利完成对网络层的服务。主要协议如下:
2.2.1ISO1745--1975:"数据通信系统的基本型控制规程".这是一种面向字符的标准,利用10个控制字符完成链路的建立,拆除及数据交换.对帧的收发情况及差错恢复也是靠这些字符来完成.ISO1155, ISO1177, ISO2626, ISO2629等标准的配合使用可形成多种链路控制和数据传输方式.
2.2.2ISO3309--1984:称为"HDLC 帧结构".ISO4335--1984:称为"HDLC 规程要素 ".ISO7809--1984:称为"HDLC 规程类型汇编".这3个标准都是为面向比特的数据传输控制而制定的.有人习惯上把这3个标准组合称为高级链路控制规程.
2.2.3ISO7776:称为"DTE数据链路层规程".与CCITT X.25LAB"平衡型链路访问规程"相兼容.
2.3链路层产品
独立的链路产品中最常见的当属网卡,网桥也是链路产品。MODEM的某些功能有人认为属于链路层,对些还有争议.数据链路层将本质上不可靠的传输媒体变成可靠的传输通路提供给网络层。在IEEE802.3情况下,数据链路层分成了两个子层,一个是逻辑链路控制,另一个是媒体访问控制。下图所示为IEEE802.3LAN体系结构。
AUI=连接单元接口 PMA=物理媒体连接
MAU=媒体连接单元 PLS=物理信令
MDI=媒体相关接口
3.网络层
网络层的产生也是网络发展的结果.在联机系统和线路交换的环境中,网络层的功能没有太大意义.当数据终端增多时.它们之间有中继设备相连.此时会出现一台终端要求不只是与唯一的一台而是能和多台终端通信的情况,这就是产生了把任意两台数据终端设备的数据链接起来的问题,也就是路由或者叫寻径.另外,当一条物理信道建立之后,被一对用户使用,往往有许多空闲时间被浪费掉.人们自然会希望让多对用户共用一条链路,为解决这一问题就出现了逻辑信道技术和虚拟电路技术.
3.1网络层主要功能
网络层为建立网络连接和为上层提供服务,应具备以下主要功能:
3.1.1路由选择和中继.
3.1.2激活,终止网络连接.
3.1.3在一条数据链路上复用多条网络连接,多采取分时复用技术 .
3.1.4差错检测与恢复.
3.1.5排序,流量控制.
3.1.6服务选择.
3.1.7网络管理.
3.2网络层标准简介
网络层的一些主要标准如下:
3.2.1 ISO.DIS8208:称为"DTE用的X.25分组级协议"
3.2.2 ISO.DIS8348:称为"CO 网络服务定义"(面向连接)
3.2.3 ISO.DIS8349:称为"CL 网络服务定义"(面向无连接)
3.2.4 ISO.DIS8473:称为"CL 网络协议"
3.2.5 ISO.DIS8348:称为"网络层寻址"
3.2.6 除上述标准外,还有许多标准。这些标准都只是解决网络层的部分功能,所以往往需要在网络层中同时使用几个标准才能完成整个网络层的功能.由于面对的网络不同,网络层将会采用不同的标准组合.
在具有开放特性的网络中的数据终端设备,都要配置网络层的功能.现在市场上销售的网络硬设备主要有网关和路由器.
4.传输层
传输层是两台计算机经过网络进行数据通信时,第一个端到端的层次,具有缓冲作用。当网络层服务质量不能满足要求时,它将服务加以提高,以满足高层的要求;当网络层服务质量较好时,它只用很少的工作。传输层还可进行复用,即在一个网络连接上创建多个逻辑连接。 传输层也称为运输层.传输层只存在于端开放系统中,是介于低3层通信子网系统和高3层之间的一层,但是很重要的一层.因为它是源端到目的端对数据传送进行控制从低到高的最后一层.
有一个既存事实,即世界上各种通信子网在性能上存在着很大差异.例如电话交换网,分组交换网,公用数据交换网,局域网等通信子网都可互连,但它们提供的吞吐量,传输速率,数据延迟通信费用各不相同.对于会话层来说,却要求有一性能恒定的界面.传输层就承担了这一功能.它采用分流/合流,复用/介复用技术来调节上述通信子网的差异,使会话层感受不到.
此外传输层还要具备差错恢复,流量控制等功能,以此对会话层屏蔽通信子网在这些方面的细节与差异.传输层面对的数据对象已不是网络地址和主机地址,而是和会话层的界面端口.上述功能的最终目的是为会话提供可靠的,无误的数据传输.传输层的服务一般要经历传输连接建立阶段,数据传送阶段,传输连接释放阶段3个阶段才算完成一个完整的服务过程.而在数据传送阶段又分为一般数据传送和加速数据传送两种。传输层服务分成5种类型.基本可以满足对传送质量,传送速度,传送费用的各种不同需要.传输层的协议标准有以下几种:
4.1 ISO8072:称为"面向连接的传输服务定义"
4.2 ISO8072:称为"面向连接的传输协议规范"
5.会话层
会话层提供的服务可使应用建立和维持会话,并能使会话获得同步。会话层使用校验点可使通信会话在通信失效时从校验点继续恢复通信。这种能力对于传送大的文件极为重要。会话层,表示层,应用层构成开放系统的高3层,面对应用进程提供分布处理,对话管理,信息表示,恢复最后的差错等.
会话层同样要担负应用进程服务要求,而运输层不能完成的那部分工作,给运输层功能差距以弥补.主要的功能是对话管理,数据流同步和重新同步。要完成这些功能,需要由大量的服务单元功能组合,已经制定的功能单元已有几十种.现将会话层主要功能介绍如下.
5.1为会话实体间建立连接。为给两个对等会话服务用户建立一个会话连接,应该做如下几项工作:
5.1.1将会话地址映射为运输地址
5.1.2选择需要的运输服务质量参数(QOS)
5.1.3对会话参数进行协商
5.1.3识别各个会话连接
5.1.4传送有限的透明用户数据
5.2数据传输阶段
这个阶段是在两个会话用户之间实现有组织的,同步的数据传输.用户数据单元为SSDU,而协议数据单元为SPDU.会话用户之间的数据传送过程是将SSDU转变成SPDU进行的.
5.3连接释放
连接释放是通过"有序释放","废弃","有限量透明用户数据传送"等功能单元来释放会话连接的.会话层标准为了使会话连接建立阶段能进行功能协商,也为了便于其它国际标准参考和引用,定义了12种功能单元.各个系统可根据自身情况和需要,以核心功能服务单元为基础,选配其他功能单元组成合理的会话服务子集.会话层的主要标准有"DIS8236:会话服务定义"和"DIS8237:会话协议规范".
6.表示层
表示层的作用之一是为异种机通信提供一种公共语言,以便能进行互操作。这种类型的服务之所以需要,是因为不同的计算机体系结构使用的数据表示法不同。例如,IBM主机使用EBCDIC编码,而大部分PC机使用的是ASCII码。在这种情况下,便需要会话层来完成这种转换。
通过前面的介绍,我们可以看出,会话层以下5层完成了端到端的数据传送,并且是可靠,无差错的传送.但是数据传送只是手段而不是目的,最终是要实现对数据的使用.由于各种系统对数据的定义并不完全相同,最易明白的例子是键盘,其上的某些键的含义在许多系统中都有差异.这自然给利用其它系统的数据造成了障碍.表示层和应用层就担负了消除这种障碍的任务.
对于用户数据来说,可以从两个侧面来分析,一个是数据含义被称为语义,另一个是数据的表示形式,称做语法.像文字,图形,声音,文种,压缩,加密等都属于语法范畴.表示层设计了3类15种功能单位,其中上下文管理功能单位就是沟通用户间的数据编码规则,以便双方有一致的数据形式,能够互相认识.ISO表示层为服务,协议,文本通信符制定了DP8822,DP8823,DIS6937/2等一系列标准.
7.应用层
应用层向应用程序提供服务,这些服务按其向应用程序提供的特性分成组,并称为服务元素。有些可为多种应用程序共同使用,有些则为较少的一类应用程序使用。应用层是开放系统的最高层,是直接为应用进程提供服务的。其作用是在实现多个系统应用进程相互通信的同时,完成一系列业务处理所需的服务.其服务元素分为两类:公共应用服务元素CASE和特定应用服务元素SASE.CASE提供最基本的服务,它成为应用层中任何用户和任何服务元素的用户,主要为应用进程通信,分布系统实现提供基本的控制机制.特定服务SASE则要满足一些特定服务,如文卷传送,访问管理,作业传送,银行事务,订单输入等.
这些将涉及到虚拟终端,作业传送与操作,文卷传送及访问管理,远程数据库访问,图形核心系统,开放系统互连管理等等.应用层的标准有DP8649"公共应用服务元素",DP8650"公共应用服务元素用协议",文件传送,访问和管理服务及协议.
讨论:OSI七层模型是一个理论模型,实际应用则千变万化,因此更多把它作为分析、评判各种网络技术的依据;对大多数应用来说,只将它的协议族(即协议堆栈)与七层模型作大致的对应,看看实际用到的特定协议是属于七层中某个子层,还是包括了上下多层的功能。
这样分层的好处有:
1.使人们容易探讨和理解协议的许多细节。
2.在各层间标准化接口,允许不同的产品只提供各层功能的一部分,(如路由器在一到三层),或者只提供协议功能的一部分。(如Win95中的Microsoft TCP/IP)
3. 创建更好集成的环境。
4. 减少复杂性,允许更容易编程改变或快速评估。
5. 用各层的headers和trailers排错。
6.较低的层为较高的层提供服务。
7. 把复杂的网络划分成为更容易管理的层。
‘柒’ OSI参考模型对学习网络编程有何指导意义
摘要 TCP/IP协议共有四层:应用层、传输层、网络层、链路层。应用层实际就是我们的应用程序,对于非具体应用而言这一层的协议是未定义的,需要我们自己根据我们具体的业务模型来制定。传输层桥接应用层和网络层,向下为我们的应用层数据填入端口标识,向上根据端口标识往各个应用分发数据包。网络层主要的功能是逻辑选路,确保我们的数据包能到达指定的目的地。链路层负责往/从有直接物理链路相连的主机或路由器发包/收包。
‘捌’ 什么是分层网络体系结构分层的含义是什么
指的是将系统的组件分隔到不同的层中,每一层中的组件应保持内聚性,并且应大致在同一抽象级别;每一层都应与它下面的各层保持松散耦合。
分层架构的优点
1、开发人员的专业分工,专注理解某一层。由于某一层仅仅调用其相邻下一层所提供的程序接口,只需要本层的接口和相邻下一层的接口定义清晰完整,开发人员在开发某一层时就可以像关注集中于这一层所用的功能和技术。
2、可以很容易用新的实现来替换原有层次的实现。 只要前后提供的服务(接口)相同,即可替换。系统开发过程中,功能需求不断变化,我们可以替换现有的层次以满足新的需求变化。
3、降低了系统间的依赖。 比如业务逻辑层中的业务发生变化, 其他两层即表现层以及数据访问层程序也不需要变化。这大大降低了系统各层之间的依赖。
4、有利于复用。充分利用现有的功能程序组件,将已经辨识的具有相对独立功能的层应用于新系统的开发,保证新系统开发的过程中,能够将重点集中于辨识和实现应用系统特有的业务功能,最终缩短系统开发周期,提高系统的质量。
分层思想
分层是基于面向对象上的,是更高层次上的设计理念。在软件开发技术的发展过程中,出现了很多优秀的思想与模式。这些思想和模式凝结了无数程序设计人员的实践经验和智慧,是软件开发领域的精华。这其中有很多思想对分层架构设计有着重要的指导作用。
分层架构的弊端
1、级联修改问题。一些复杂的业务中,由于业务流程发生变化,为了这个变化所有层都需要修改。
2、性能问题。本来是直接简单的操作,需要在整个系统中层层传递,势必造成性能的下降,同时也加大的开发的复杂度。
从上面的分析可以看出, 分层架构设计有许多优点同样存在不足,在实际使用过程中,我们应该权衡利弊关系,选择一种符合实际项目的最佳方案。
‘玖’ TCP/IP协议与网络编程
先搞清楚 ISO/OSI与TCP/IP的关系
1.2 TCP/IP的分层体系结构与协议栈的概念
问题1:什么叫协议栈(Protocol Stack)?
如上图所示,网络协议是分层的,在这种层次结构中各层有明确的分工,不同层的协议从上到下形成了一个栈结构的依赖关系,通常将其形象地称为协议栈.问题2:为什么协议栈简称TCP/IP?
如上图所示,从该结构中可以看出,在TCP/IP的协议栈中包括很多协议(如FTP,IGMP等),但TCP和IP是该协议栈中两个最重要的协议,所以人们常常将该协议栈简称TCP/IP问题3:为什么协议栈中TCP与IP是最重要的协议?
先理解一下这4层的基本概念
------>第1层:网络接口层
功能1:发包与收包
(1)发包。它是协议栈的最底层,负责将其之上的网络层要发送出去的数据(即IP数据报)发送到其下面的物理网络
(2)收包。接收由物理网络发送到该目标机的数据帧,并抽出IP数据报交给网络层。要注意,这里所说的物理网络是指各种实际传输数据的局域网或广域网等。功能2:为什么在TCP/IP协议栈中没有定义网络接口层呢?
(1)便于实现不同网络之间的互联。
实现不同网络的互联是TCP/IP要解决的最主要问题。不同的网络尽管其数据传输介质,数据传输速率等有很大的差异,但都可以实现网络内数据的传输,当然也就可以进行TCP/IP协议栈中网络层IP数据报的传输。这样TCP/IP就可以将重点放在网络之间的互联上,而不用去纠缠各种物理网络的具体实现细节,这样就非常巧妙地解决了不同类型物理网络的互联问题。这也是TCP/IP得以广泛应用的一个重要原因
(2)为将来物理网络的发展留下了广阔的空间------>第2层:网际层(也称互联网络层)
功能:把源主机上的分组(在网际层传输的数据单位叫IP数据报,也称为IP分组)根据需要发送到互联网中的任何一台目标主机上.(关于怎样得到目标主机的IP地址,详见第3章中的ARP)什么叫路由选择?
在一个由很多网络组成的互联网中,一台主机(即源主机)与不在同一个网络中的另一台主机(目标主机)通信时,可能有多条通路相连,网际层的一个重要功能就是要在这些通路中做出选择,这就是所谓的路由选择功能.它是网际层一个非常重要的功能------>第3层:传输层
------>第4层:应用层结论:
为什么IP层非常重要?
IP层重点面向同外界打交道,比如你在广州,我在北京,IP层就能通过路由选择一条道路,以及到站后,就开始用ARP广播,你们谁是这个MAC地址的主人,听到了请回复,这时对方的IP层收包了,与自己MAC地址(全球唯一地址)一样,就开始解包(当然上层要有相应处理软件程序)
为什么TCP层非常重要?
TCP层重点面向同内部打交道,我的任务是要检查你发到我电脑里面的这个数据是不是正确的。
在IP层提供的是一种"尽力而为"的数据报传输服务,它不能保证数据总是可靠地从源主机传输到目标主机,为什么TCP能保证数据传输正确,因为它每发送一个数据都会要效验的(详见第4章传输层)
1.3 TCP/IP中数据的封装与解封过程
1.4 Internet的管理机构
例如,CNNIC(China Internet Network Information Center),中国互联网络信息中心
1.5 RFC文档
RFC(Request for Comments),至今已经发表了数千篇文章,几乎包含了与计算机通信有关的任何内容,全面地反映了Internet的研究和发展过程.==========================================
第2章 网络接口层
所讲都是硬件方面,什么是网卡,网卡是怎么做出来的,非硬件人员,跳过
==========================================
第3章 互联网络层
3.1.1 网络互联概述
internet(注意小写)---如果利用网络互联设备将两个或多个物理网络相互连接,就形成了互联网络(internetwork)
Internet(注意大写)---特指全球范围内的互联网
Router---------------将多个物理网络互联的最常用设备是路由器
Intranet----------如果一个企业内部网络,使用了Internet中的TCP/IP及其网络互联技术,但不能上网,是一个有限的,封闭的网络
Extranet----------如果一个Intranet通过防火墙等技术与外部Internet相连,则该Intranet就是一个开放的,通过外部可以访问的网络3.1.2 路由器
(1)路由器的工作原理
if(在同一IP子网) 直接发送到网络上,对方就能收到
else(不在同一IP子网) 发送一个能到达子网的路由,不知道如何传送的IP报文送给"默认网关",一级级地传送,IP报文最终送到目的地,达不到目的地的IP报文则被网络丢弃(2)路由器的功能(具有转发报文和路由选择两大功能)3.2 IP数据报格式(分报头区和数据区两大部分)
大多是理论知识,要摘抄就全摘抄了.书上介绍的才几页,也不太全,具体参考网上,此处不摘抄了,介绍几种常用网络的MTU值
注意:此节是原始套接字模块,重点.网上有教材专门讲解其模块.可以参考
---------------------------->以下是总结:第1点:集中在一个点上攻,思路全围绕它转,天网恢恢,有一个漏的,当把所有注意点集中在它上时,总会找到这个程序突破处。
以上次写代码为例:在程序内找了几天BUG,一直没果,最后一个思路我叹了口气,将思路放在操作系统上,才几分钟就从微软技术支持网站上找到了,原来此问题是要改注册表问题(此程序是多线程断点下载的实例)
第2点:微软技术支持网站是个很不错的网站,里面有很多源代码,可提供一个方向
第3点:很多代码在网上是搜索不出来的,必须要相信自己,既然认为这是对的,就一定要坚持下去,各个突破
第4点:当遇上大问题时,离开电脑一段时间(例如下班后或放假),给点独立空间思考应该怎么做!