posts - 2,  comments - 0,  trackbacks - 0
  2010年6月3日


一、TCP/IP介绍
      TCP/IP协议(Transfer Controln Protocol/Internet Protocol)叫做传输控制/网际协议,又叫网络通讯协议,这个协议是Internet国际互联网络的基础。

TCP/IP由四个层次组成:网络接口层(链路层)、网间网层(网络层)、传输层(运输层)、应用层。
    网络接口层:这是TCP/IP软件的最低层,负责接收IP数据报并通过网络发送之,或者从网络上接收物理帧,抽出IP数据报,交给IP层。

    网间网层:负责相邻计算机之间的通信。其功能包括三方面。一、处理来自传输层的分组发送请求,收到请求后,将分组装入IP数据报,填充报头,选择去往信宿机的路径,然后将数据报发往适当的网络接口。二、处理输入数据报:首先检查其合法性,然后进行寻径--假如该数据报已到达信宿机,则去掉报头,将剩下部分交给适当的传输协议;假如该数据报尚未到达信宿,则转发该数据报。三、处理路径、流控、拥塞等问题。

    传输层:提供应用程序间的通信。其功能包括:一、格式化信息流;二、提供可靠传输。为实现后者,传输层协议规定接收端必须发回确认,并且假如分组丢失,必须重新发送。

    应用层:向用户提供一组常用的应用程序,比如电子邮件、文件传输访问、远程登录等。远程登录TELNET使用TELNET协议提供在网络其它主机上注册的接口。TELNET会话提供了基于字符的虚拟终端。文件传输访问FTP使用FTP协议来提供网络内机器间的文件拷贝功能。




ARP(Address Resolation Protocol) 地址解析协议
RARP(Reverse Address Resolution Protocol)反向地址转换协议
IP(Internetworking Protocol) 网间网协议
ICMP(Internet Control Message Protocol) 互联网控制信息协议
IGMP(Internet Group Management Protocol)Internet 组管理协议
TCP(Transport Control Protocol) 传输控制协议
UDP(User Datagram Protocol) 用户数据报协议
SMTP(Simple Mail Transfer Protocol) 简单邮件传输协议
SNMP(Simple Network manage Protocol) 简单网络管理协议
FTP(File Transfer Protocol) 文件传输协议

二、TCP、UDP协议
   TCP:传输控制协议,面向连接、可靠的字节流、提供流量控制、全双工的数据传输服务。
   UDP:用户数据协议,无连接、简单的、不可靠、定长数据包。

三、TCP连接的建立与终止
   TCP连接的建立(三路握手)
1. 服务器必须准备好接受外来的连接。这通过调用 socket、bind 和 listen 函数来完成,称为被动打开(passive open)。
2. 客户通过调用 connect 进行主动打开(active open)。这引起客户TCP发送一个SYN分节(表示同步),它告诉服务器客户将在(待建立的)连接中发送的数据的初始序列号。一般情况下SYN分节不携带数据,它只含有一个IP头部、一个TCP头部及可能有的TCP选项。
3. 服务器必须确认客户的SYN,同时自己也得发送一个SYN分节,它含有服务器将在统一连接中发送的数据的初始序列号。服务器一单个分节向客户发送SYN和对客户SYN的ACK。
4. 客户必须确认服务器的SYN。

   TCP连接终止
1. 某个应用进程首先调用close,称这一端执行主动关闭(active close),这一端的TCP发送一个FIN分节,表示数据发送完毕。
2.  接收到FIN的另一端执行被动关闭(passive close)。这个FIN由TCP确认。它的接收也作为 文件结束符传递给接收方应用进程(放在已排队等候该应用进程接收的任何其他数据之后),应为FIN的接收意味着应用进程在相应连接上再也接收不到额外数据。
3. 一段时间后,接收到文件结束符的应用进程将调用close关闭它的套接口。这导致它的TCP也发送一个FIN。
4. 接收到这个FIN的原发送方TCP(即执行主动关闭的那一端)对它进行确认。



四、TCP状态转换图

posted @ 2010-06-03 14:57 小修 阅读(338) | 评论 (0)编辑 收藏
  2009年2月15日
C++程序设计模型直接支持三种 programming paradigms (程序设计典范)

1.程序模型(procedural model),就像C一样,C++当然也支持它,字符串的处理就是一个例子,我们可以使用字符数组以及 str* 函数集(定义在标准的C函数库中):
      
char boy[] = "Danny";
char *p_son;
……
p_son 
= new char[ strlen (boy ) + 1 ];
strcpy( p_son, boy );
……
if ( !strcmp( p_son, boy ) )
   take_to_disneyland( boy );

2.抽象数据类型模型(abstract data type model, ADT)。该模型所谓的“抽象”是和一组表达式(public 接口)一起提供,而其运算定义仍然隐而未明。例如下面的String class:

String girl = "Anna";
String daughter;
……
// String::operator=();
daughter = girl;
……
// String::operator==();
if ( girl == daughter )
  take_to_disneyland( girl );

3.面向对象模型(object-oriented model)。在此模型中有一些彼此相关的类型,通过一个抽象的 base class (用以提供共通接口)被封装起来。Library_materials class 就是一个例子,真正的 subtypes 例如 Book、Video、Compact_Disc、Puppet、Laptop 等等都可以从那里派生而来:
void check_in( Library_materials *pmat )
{
  
if ( pmat->late() )
     pmat
->fine();
  pmat
->check_in();

  
if ( Lender *plend = pmat->reserved() )
     pmat
->notify( plend );
}
posted @ 2009-02-15 00:16 小修 阅读(632) | 评论 (0)编辑 收藏
仅列出标题  
<2024年12月>
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234

常用链接

留言簿(1)

随笔分类

随笔档案

文章分类

收藏夹

搜索

  •  

最新评论

阅读排行榜

评论排行榜