请选择 进入手机版 | 继续访问电脑版
查看: 175|回复: 1

[经验分享] 基于Linux网络编程的详细讲解

[复制链接]

签到天数: 103 天

[LV.6]签到达人

发表于 2018-10-11 17:41:18 | 显示全部楼层 |阅读模式

首先来说一下两个主机A和B进行通信具体是什么意思:主机A和主机B进行通信时,真正进行通信的实体是A主机的其中一个进程和B主机的一个进程进行通信,所以严格的讲,两个主机进行通信就是两个主机中的应用进程进行通信。

        网络字节序是大端字节序。

        我们知道,在单个的计算机中进程是用进程标识符来标志的,但在因特网环境下,这种方式对于应用进程来说行不通,因为在因特网上使用的计算机的操作系统的种类繁多,而不同的操作系统又使用不同的格式来标识进程。另外通信时我们只需要知道目的主机,而不需要知道具体是目的主机中的哪个进程,所以就产生了协议端口号,简称端口号

        需要注意的是,这种在协议栈层间的抽象的协议端口是软件端口,和路由器或交换机上的硬件端口是完全不同的概念。硬件端口是不同硬件设备进行交互的接口,而软件端口是应用层的协议进程与运输实体进行层间交互的地址,不同的系统具体实现端口的方法可以是不同的,取决于系统本身。

        套接字socket 是由IP地址和端口号组成的。即socket=IP:端口号   例如 socket=192.168.1.32:8080。
        IP地址:找到对方的计算机       端口号:找到对方计算机中的具体的应用进程,这样两个主机建立socket后就可以通信了。

        TCP/IP的运输层用一个16位的端口号来标志一个端口。但请注意,端口号只具有本地意义,它只是为了标志本计算机应用层中的各个进程和运输层交互时的接口。在因特网不同的计算机中,相同的端口号是没有关联的。16位的端口号允许有65535个不同的端口号,这个数目对于一个计算机是足够的。

        因特网上的计算机进行通信是采用 客户端--服务器的方式,客户在发起通信时,必须知道服务器的IP和端口号。因此端口号又分为两大类:
(1)服务器使用的端口号 ,这里又分为两类,最重要的一类叫做熟知端口号或系统端口号,数值为0~1023,这些数值可以在网址www.iana.org查到。另一类叫做登记端口号,数值为1024~49151,这类端口号是为没有熟知端口号的应用进程使用的。
(2)客户端使用的端口号。 数值为49152~65535,因为这类端口号只在客户进程运行时才存动态选择,因此又叫做短暂端口号。这类端口号是留给客户进程选择暂时使用,当服务器进程收到客户进程的报文时,就知道了客户进程所使用的端口号,因而可以把数据发送给客户进程。通信结束后,刚才以使用过的端口号就不复存在,这个端口号就可以供其它进程使用。

        补充:短暂端口号表示这种端口号存在时间是短暂的,客户进程并不在意系统给分配的是哪个端口号,因为客户进程之所以必须有一个端口号(在本地主机中必须是唯一的),是为了让运输层的实体能够找到自己。这和熟知的端口号不同,服务器机器一接通电源,服务器程序就运行起来了。为了让因特网上的所有客户程序都能找到服务器程序,服务器程序所使用的端口号(即熟知端口号)必须是固定的,并且是总所周知的。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

返回顶部