linux socket网络编程(一)

来源:互联网 发布:手机视频剪辑软件 编辑:程序博客网 时间:2024/05/16 08:06

        什么是socket相信初学者会觉得很迷惑。

1、什么是socket

        所谓socket通常也称作"套接字",应用程序通常通过"套接字"向网络发出请求或者应答网络请求。以J2SDK-1.3为例,Socket和ServerSocket类库位于java .net包中。ServerSocket用于服务器端,Socket是建立网络连接时使用的。在连接成功时,应用程序两端都会产生一个Socket实例,操作这个实例,完成所需的会话。对于一个网络连接来说,套接字是平等的,并没有差别,不因为在服务器端或在客户端而产生不同级别。不管是Socket还是ServerSocket它们的工作都是通过SocketImpl类及其子类完成的。

2、socket的功能

        socket的英文原意就是“插座”。linux使用的进程间通信方式有管道和有名管道、信号、消息队列、共享内存、信号量及套接字,在这里是作为BSD UNIX的进程通信机制。日常生活中常见的插座,有的是信号插座,有的是电源插座,有的可以接收信号或能量,有的可以发送信号或能量。加入电话线与电话机之间安放一个插座就相当于socket,非常的相似。

        电话系统与面向连接的socket机制相比,有着非常相似的地方。电话的通话双方相当于相互通信的两个进程;通话双方所在的地区(享有一个全局唯一的区号)相当于一个网络,区号是它的网络地址;区内的一个单位的交换机相当于一台主机,主机分配给每个用户的局内号码相当于socket 号。

废话不讲,直接进入socket的知识。

3、套接字的三种类型

1)、流式套接字(SOCK_STREAM)

2)、数据报套接字(SOCK_DGRAM)

3)、原始套接字

(1)、流式套接字(SOCK_STREAM)

        流式套接字可以提供可靠的、面向连接的通讯流。如果你通过流式套接字发送顺序的数据:“1”、“2”。那么数据到达远程时候的顺序也是“1”、“2”。

        那么流式套接字可以做什么呢,知道telnet远程登陆吗?最常用的BBS服务器,以及系统的远程登陆都是通过telnet协议连接。telnet就是一个流式连接。因此流式套接字采用了TCP协议。

(2)、数据报套接字(SOCK_DGRAM)

        数据报套接字定义了一种无连接的服务,数据通过相互独立的报文进行传输,是无序的,并且不保证可靠,无差错。原始套接字允许对底层协议如IP或ICMP(ping的协议)直接访问,主要是用于新的网络协议测试等。

        数据报套接字为什么叫无连接,怎么处理这样的数据呢,为什么不可靠?事实是如果你发送一个数据报,它可能不会到达。它可能会以不同的顺序到达。如果它到达了,它包含的数据中可能存在错误。因此数据报套接字也是用IP但它不使用TCP而是使用UDP协议通信。

(3)、原始套接字

        原始套接字主要用于一些协议的开发,可以进行比较底层的操作。它功能强大,但是没有上面介绍的两种套接字使用方便,一般的程序也涉及不到原始套接字。

4、什么是TCP/IP

        TCP/IP 代表传输控制协议/网络协议(注意:它们是两个不同的协议!),它是做为软件的网络组成部件而设计的。每个TCP/IP 的协议都有他专门的工作,比如万维网(WWW),发送电子邮件(E-mail),传输文件(Ftp),提供远程登陆服务等。

        TCP/IP 协议可以根据提供的不同的服务分为几组:
        1)、控制数据的协议
                TCP(传输控制协议Transmission Control Protocol)以连接为基础,也就是说两台电脑必须先建立一个连接,然后才能传输数据。事实上,发送和接受的电脑必须一直互相通讯和联系。
                UDP(使用者数据报协议User Datagram Protocol)它是一个无连接服务,数据可以直接发送而不必在两台电脑之间建立一个网络连接。它和有连接的TCP 相比,占用带宽少,但是你不知道你的数据是否真正到达了你的客户端,而客户端收到的数据也不知道是否还是原来的发送顺序。
         2)、数据路由协议
                 路由协议分析数据包的地址并且决定传输数据到目的电脑最佳路线。他们也可以把大的数据分成几部分,并且在目的地再把他们组合起来。
IP(因特网协议Internet Protocol)处理实际上传输数据。
                ICMP(因特网控制信息协议Internet Control Message Protocol)处理IP 的状态信息,比如能影响路由决策的数据错误或改变。
                RIP(路由信息协议Routing Information Protocol)它是几个决定信息传输的最佳路由路线协议中的一个。

                OSPF(Open Shortest Path First)一个用来决定路由的协议。网络地址协议决定了命名电脑地址的方法:使用一个唯一的数字和一个字母名字。
                ARP(地址决定协议Address Resolution Protocol)确定网络上一台电脑的数字地址。
                DNS(域名系统Domain Name System)从机器的名字确定一个机器的数字地址。
                RARP(反向地址决定协议Reverse Address Resolution Protocol)确定网络上一台计算机的地址,和ARP(地址决定协议Address Resolution Protocol)正好相反。
        3.用户服务
                BOOTP(启动协议Boot Protocol) 由网络服务器上取得启动信息,然后将本地的网络计算机启动。
                FTP(文件传输协议File Transfer Protocol)通过国际互连网从一台计算机上传输一个或多个文件到另外一台计算机。
                TELNET(远程登陆)允许一个远程登陆,使用者可以从网络上的一台机器通过TELNET连线到另一台机器,就像使用者直接在本地操作一样。
                EGP(外部网关协议Exterior Gateway Protocol)为外部网络传输路由信息。
                GGP(网关到网关协议Gateway-to-Gateway Protocol)在网关和网关之间传输路由协议。
                IGP(内部网关协议Interior Gateway Protocol)在内部网络传输路由信息。
        3.其他协议(也为网络提供了重要的服务)
                NFS(网络文件系统Network File System)允许将一台机器的目录被另一台机器上的用户安装(Mount)到自己的机器上,就像是对本地文件系统进行操作一样进行各式各样的操作。
                NIS(网络信息服务Network Information Service)对整个网络用户的用户名、密码进行统一管理,简化在NIS 服务下整个网络登陆的用户名/密码检查。
                RPC(远程过程调用Remote Procedure Call)通过它可以允许远程的应用程序通过简单的、有效的手段联系本地的应用程序,反之也是。
                SMTP(简单邮件传输协议Simple Mail Transfer Protocol)一个专门为电子邮件在多台机器中传输的协议,平时发邮件的SMTP 服务器提供的必然服务。
                SNMP(简单网络管理协议Simple Network Management Protocol)这是一项为超级用户准备的服务,超级用户可以通过它来进行简单的网络管理。

原创粉丝点击