Linux网络编程--(2)网络编程基础

来源:互联网 发布:软件测试工资待遇2017 编辑:程序博客网 时间:2024/05/29 12:26
一、IP地址
(1)IP的概念:Internet Protocol网络之间互连的协议也就是为计算机网络相互连接进行通信而设计的协议。在因特网中,它是能使连接到网上的所有计算机网络实现相互通信的一套规则,规定了计算机在因特网上进行通信时应当遵守的规则。任何厂家生产的计算机系统,只要遵守IP协议就可以与因特网互连互通。IP地址具有唯一性,根据用户性质的不同,可以分为5类。
(2)IP的分类:

(3)IP地址的转换:
inet_aton函数
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
int inet_aton(const char *cp, struct in_addr *inp);
将strptr所指的字符串转换成32位的网络字节序二进制。
inet_addr函数
in_addr_t inet_addr(const char *cp);
功能同上,返回转换后的地址。
inet_ntoa函数
char *inet_ntoa(struct in_addr in);
将32位的网络字节序二进制地址转换成点分十进制的字符串。
二、端口号
端口号的概念:
在网络技术中,端口(Port)包括逻辑端口和物理端口两种类型。物理端口指的是物理存在的端口。由于物理端口和逻辑端口数量较多,为了对端口进行区分,将每个端口进行了编号,这就是端口号。
为了区分一台主机接收的数据包应该转交那个进程来处理,用端口号来区分。
端口号一般由IANA(Internet Assigned Numbers Authority)管理
端口号
唯一的确定一个主机里的某个进程,
IP地址唯一的确定一个主机的
ip+port 唯一的确定浩瀚的网络中唯一的一台主机上的唯一的一个进程
三、字节序
字节序概念:即字节在电脑中存放时的序列与输入(输出)时的序列是先到的在前还是后到的在前。
小端序:低序字节存储在低地址。Tntel AMD等采用
大端序:高序字节存储在低地址。ARM Motorola 采用
网络字节序:
使用统一的字节顺序,避免兼容新问题。
使用的字节序转换函数:
h host 主机
to
n  network 网络
l  long  4个字节
s  short  2个字节
htons  主机字节序---》网络字节序  2个字节
htonl
ntohs  
ntohl
四、socket简介:
网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。
建立网络通信连接至少要一对端口号(socket)。socket本质是编程接口(API),对TCP/IP的封装,TCP/IP也要提供可供程序员做网络开发所用的接口,这就是Socket编程接口。作为BSD UNIX的进程通信机制,取后一种意思。通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,可以用来实现不同虚拟机或不同计算机之间的通信。在Internet上的主机一般运行了多个服务软件,同时提供几种服务。每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务。
socket类型:
socket类型有SOCK_STREAM、SOCK_DGRAM、SOCK_RAW
流式Socket(SOCK_STREAM)是一种面向连接的Socket,针对于面向连接的TCP服务应用。
数据报式Socket(SOCK_DGRAM)是一种无连接的Socket,对应于无连接的UDP服务应用。
原始套接字SOCKET_RAW 可以对比较低层次协如IP ICMP 直接访问。


原创粉丝点击