免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12345下一页
最近访问板块 发新帖
查看: 14062 | 回复: 43

*******网络编程基础( 讨论版V1 )******* [复制链接]

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
发表于 2003-04-02 13:50 |显示全部楼层
最近这里有关网络编程方面的讨论比较多,我就抛砖引玉,就有关网络编程问题(主要讨论应用层到传输层的接口),给几个讨论的话题,从最基本的开始,每次讨论5个话题,希望各位论坛朋友参与讨论,畅所欲言!

1、套接口是什么?套接口和套节字是什么关系?

2、TCP和UDP有什么区别?

3、IPV4和IPV6由什么区别?如何互操作?

4、TCP的三路握手和四分组连接终止序列的过程分别是什么?

5、在TCP状态转化的过程中,分析如下几种状态:
TIME_WAIT、FIN_WAIT_1、FIN_WAIT_2、CLOSE_WAIT和LAST_WAIT。

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
发表于 2003-04-02 13:56 |显示全部楼层

*******网络编程基础( 讨论版V1 )*******

补充一点:
各位大虾,讨论的时候请针对上面的问题,使用数字1、2、3、4、5分别对应上述问题分别描述。

论坛徽章:
0
发表于 2003-04-02 18:23 |显示全部楼层

*******网络编程基础( 讨论版V1 )*******

好累啊
要真仔细说的话还是真的累
因为知识点很多了

2TCP是有连接的,UDP是无连接的。有连接的话保证数据流准确按序收发,并且在收发错误时会报错

UDP不保证发送的按序,并且不保证能够发送,当然如果网络没有问题的话
那么使用它还是会发送成功的
3 IPV4 和V6区别在于IP地址长度不一样
另外如果在IP层比较的话
那么它们的包长不一样
还有
IPV6分包只能在发送方进行

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
发表于 2003-04-02 18:47 |显示全部楼层

*******网络编程基础( 讨论版V1 )*******

非常好,斑竹首先说话了!
对于上述讨论点,可以针对某个说说自己的意见。

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
发表于 2003-04-02 19:04 |显示全部楼层

*******网络编程基础( 讨论版V1 )*******

http://edu.sdinfo.net/74596379271364608/20021106/1097592.shtml

1.
套接字是网络通信的基本构件,它提供了不同主机间进程双向通信的端点.
套接字存在于特定的通信域(即地址族)中,只有隶属于同一地址族的套接字才能建立对话。Linux支持AF_INET(IPv4协议)、AF_INET6(IPv6协议)和AF_LOCAL(Unix域协议)。

Linux支持以下的socket families或domain:

◆ Unix domain sockets;

◆ INET TneIntemet address family supports communications via;

◆ TCP/IP protocols;

◆ Amateur radio X.25;

◆ Novel IPX;

◆ Appletalk DDP;

◆ X.25。

套接口(socket)=网络地址+端口号。,要建立一个套接口必须调用socket函数,套接口有三种类型,即字节流套接口(SOCK_STREAM),数据报套接口(SOCK_DGRAM)和原始套接口(SOCK_RAW)。

4,5说起来太累,得把那tcp/ip详解上的图贴上来,才直观

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
发表于 2003-04-02 19:40 |显示全部楼层

*******网络编程基础( 讨论版V1 )*******

对gadfly 的一点补充:

定义一个连接的一个端点的两元组,即IP地址和端口号,称为一个套接口。在网络连接中,两个端点所组成的四元组(即本地IP、本地PORT、远程IP和远程PORT)称为socket pair,该四元组唯一的标识了一个网络连接。该情况可通过netstat验证。该四元组一旦建立便可读写数据到该接口。

套节字是用来引用和访问套接口的描述字(应用程序便是通过该描述字调用API与内核交互的),并且一个套接字唯一的对应一个套接口,反之,一个套接口可以有多个套节字。

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
发表于 2003-04-02 20:49 |显示全部楼层

*******网络编程基础( 讨论版V1 )*******

5.
连接过程是通过一系列状态表示的,这些状态有:LISTEN,SYN-SENT,SYN-RECEIVED,ESTABLISHED,FIN-WAIT-1,FIN-WAIT-2,CLOSE-WAIT,CLOSING,LAST-ACK,TIME-WAIT和 CLOSED。CLOSED表示没有连接,各个状态的意义如下:

LISTEN - 侦听来自远方TCP端口的连接请求;

SYN-SENT - 在发送连接请求后等待匹配的连接请求;

SYN-RECEIVED - 在收到和发送一个连接请求后等待对连接请求的确认;

ESTABLISHED - 代表一个打开的连接,数据可以传送给用户;

FIN-WAIT-1 - 等待远程TCP的连接中断请求,或先前的连接中断请求的确认;

FIN-WAIT-2 - 从远程TCP等待连接中断请求;

CLOSE-WAIT - 等待从本地用户发来的连接中断请求;

CLOSING - 等待远程TCP对连接中断的确认;

LAST-ACK - 等待原来发向远程TCP的连接中断请求的确认;

TIME-WAIT - 等待足够的时间以确保远程TCP接收到连接中断请求的确认;

CLOSED - 没有任何连接状态;

TCP连接过程是状态的转换,促使发生状态转换的是用户调用:OPEN,SEND,RECEIVE,CLOSE,ABORT和STATUS;传送过来的数据段,特别那些包括以下标记的数据段SYN,ACK,RST和FIN;还有超时,上面所说的都会时TCP状态发生变化。

 

下面的图表示了TCP状态的转换,但这图中没有包括错误的情况和错误处理,不要把这幅图看成是总说明了。



http://www.longen.org/S-Z/details~z/TCP.htm

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
发表于 2003-04-02 20:54 |显示全部楼层

*******网络编程基础( 讨论版V1 )*******

握手和终止过程,也可以从上图中总结出来,各位可以归纳出c/s分别的状态变化序列

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
发表于 2003-04-02 21:52 |显示全部楼层

*******网络编程基础( 讨论版V1 )*******

对无双的一点补充:

针对标题2

UPD是不可靠的,如果向一个UDP套接口发送数据,那么并不能保证数据能够正确的到达,如果client发送的数据被路由丢弃或者服务器的应答信息丢失,那么client将一直阻塞,直到应用设置的超时到达,UDP需要应用来做接受确认、传输超时或者重传的机制。UDP缺乏流量控制。UDP是一个无连接协议,确省情况下client没有connect的动作(可以对UDP套接口的client或server调用connect),套接口的两个端点是通过API来标识的。一般的,UDP服务属于迭代的,而TCP服务大多数是并发的。UDP的队列机制被封装在API中。当一个TCP连接一旦成功建立,套接口的四元组是固定的,但是UDP不能保证这一点。再不能保证是否连接已建立的情况下,UDP的异步错误是不可预知的。对于一个UDP套接口可以多次调用connect,但是对于TCP只能调用一次。

TCP是面向连接的、全双工的、可靠的,TCP传输的是无记录边界有序字节流(有序是指:对于传输过程中的每个字节TCP与一个序列号关联起来),TCP通过通告窗口来控制流量。

有关TCP再此不做详细讨论,是以后讨论的重点。

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
发表于 2003-04-02 22:10 |显示全部楼层

*******网络编程基础( 讨论版V1 )*******

感谢gadfly对状态转化图的引入,不知道gadfly能否就TIME_WAIT和CLOE_WAIT和FIN_WAIT_1这三种状态做些描述,建议主要针对以下两方面来做描述:
(1)、该状态在什么情况下出现。
(2)、TCP为什么要引入该状态,分别对应与那些处理细节

一点补充,对于网络编程者而言,如果能够对TCP状态做深入的理解,那么网络应用中出现的大多数问题可通过状态图分析,从而找到原因(一些实现细节也隐含在状态图中),同时对于理解整个传输层协议由很大的帮助。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP