IPV4 -- IP地址分类:主机号是区分主机的,网络号是区分网段的

子网掩码是对主机号进行划分子网用的

举例说明:

对 192.168.1.0网段划分4个 其子网掩码 : 拿出主机号的两个位进行划分子网才可以有4种情况

其子网掩码 1111111.11111111.11111111.11000000 ---- 255.255.255.192

子网掩码与IP地址进行按位与运算后悔知道其是哪个子网下的,根据子网掩码可以知道有几个子网

按照子网掩码 255.255.255.192  和 网段 192.168.1.0 划分四个子网如下:

第一个子网 : 192.168.1.1 ~ 192.168.1.62

第二个子网 : 192.168.1.65 ~ 192.168.1.126

第三个子网 : 192.168.1.129 ~ 192.168.1.190

第四个子网 : 192.168.1.193 ~ 192.168.1.254

 协议模型:

端口号:

(1)网络通信 ip 是区分那台电脑的,端口号是区分电脑上那个程序的,如QQ,微信是不同的端口

(2)TCP和UDP的端口是分开,如TCP服务器可以使用8080端口,UDP服务器也可以使用8080端口

(3)端口号分配众所周知端口:1~1023(1~255之间为众所周知端口,256~1023端口通常由UNIX系统占用) 已登记端口:1024~49151  动态或私有端口:49152~65535

对于socket:

socket 是网络通信过程中的文件描述符,网络通信过程中的发送接收数据bind,连接都是针对这个socket操作;它就是一个网络文件描述符和IO中的fd一样

socket 类型

(1)流式套接字(SOCK_STREAM) :提供了一个面向连接、可靠的数据传输服务,数据无差错、无重复的发送且按发送顺序接收。内设置流量控制,避免数据流淹没慢的接收方。数据被看作是字节流,无长度限制。针对TCP

(2)数据报套接字(SOCK_DGRAM) :提供无连接服务。数据包以独立数据包的形式被发送,不提供无差错保证,数据可能丢失或重复,顺序发送,可能乱序接收。针对UDP

(3)原始套接字(SOCK_RAW) :可以对较低层次协议如IP、ICMP直接访问。

 IP地址转换:

(1) 将strptr所指的字符串转换成32位的网络字节序二进制值

  int  inet_aton(const  char  *strptr,  struct  in_addr  *inp);

(2) 将网络地址转换成 “.” 点隔的字符串格式 

  char *inet_ntoa(struct in_addr in);

(3)将cp指向的字符串格式的ip转为整数网络字节序的格式   

  in_addr_t inet_addr(const char *cp);

  

(4)转换后的为主机字节序整数  

  in_addr_t inet_network(const char *cp);

(5)将网络字节序的端口号转为主机字节序格式 uint16_t ntohs(uint16_t netshort);

 大小端问题:针对多字节存储

网络字节序是大端格式,但是对于不同的主机,其大小端不确定只能通过函数转换,把不同主机上的字节序全部转换为网络字节序格式。

大端格式:低地址放数据的高位字节。

小端格式:低地址放数据的低位字节。

 

 字节序转换函数:

(1)主机字节序到网络字节序

    u_long htonl (u_long hostlong);

    u_short htons (u_short short);

(2)网络字节序到主机字节序

    u_long ntohl (u_long hostlong);

    u_short ntohs (u_short short);

Linux网络编程 了解的更多相关文章

  1. 【深入浅出Linux网络编程】 "开篇 -- 知其然,知其所以然"

    [深入浅出Linux网络编程]是一个连载博客,内容源于本人的工作经验,旨在给读者提供靠谱高效的学习途径,不必在零散的互联网资源中浪费精力,快速的掌握Linux网络编程. 连载包含4篇,会陆续编写发出, ...

  2. 【linux草鞋应用编程系列】_5_ Linux网络编程

    一.网络通信简介   第一部分内容,暂时没法描述,内容实在太多,待后续专门的系列文章.   二.linux网络通信     在linux中继承了Unix下“一切皆文件”的思想, 在linux中要实现网 ...

  3. Linux 网络编程(IO模型)

    针对linux 操作系统的5类IO模型,阻塞式.非阻塞式.多路复用.信号驱动和异步IO进行整理,参考<linux网络编程>及相关网络资料. 阻塞模式 在socket编程(如下图)中调用如下 ...

  4. linux网络编程 no route to host 解决方案

    linux网络编程 no route to host 解决方案 [整合资料] (2013-05-13 21:38:12) 转载▼ 标签: net iptables it 分类: Linux 参考资料h ...

  5. linux网络编程-(socket套接字编程UDP传输)

    今天我们来介绍一下在linux网络环境下使用socket套接字实现两个进程下文件的上传,下载,和退出操作! 在socket套接字编程中,我们当然可以基于TCP的传输协议来进行传输,但是在文件的传输中, ...

  6. Linux网络编程&内核学习

    c语言: 基础篇 1.<写给大家看的C语言书(第2版)> 原书名: Absolute Beginner's Guide to C (2nd Edition) 原出版社: Sams 作者: ...

  7. linux网络编程_1

    本文属于转载,稍有改动,以利于学习. (一)Linux网络编程--网络知识介绍 Linux网络编程--网络知识介绍客户端和服务端         网络程序和普通的程序有一个最大的区别是网络程序是由两个 ...

  8. Linux网络编程入门 (转载)

    (一)Linux网络编程--网络知识介绍 Linux网络编程--网络知识介绍客户端和服务端         网络程序和普通的程序有一个最大的区别是网络程序是由两个部分组成的--客户端和服务器端. 客户 ...

  9. Linux网络编程必看书籍推荐

    首先要说讲述计算机网络和TCP/IP的书很多. 先要学习网络知识才谈得上编程 讲述计算机网络的最经典的当属Andrew S.Tanenbaum的<计算机网络>第五版,这本书难易适中. &l ...

  10. [转] - Linux网络编程 -- 网络知识介绍

    (一)Linux网络编程--网络知识介绍 Linux网络编程--网络知识介绍客户端和服务端         网络程序和普通的程序有一个最大的区别是网络程序是由两个部分组成的--客户端和服务器端. 客户 ...

随机推荐

  1. tire 树入门

    博客: 模板: 前缀是否出现: /* trie tree的储存方式:将字母储存在边上,边的节点连接与它相连的字母 trie[rt][x]=tot:rt是上个节点编号,x是字母,tot是下个节点编号 * ...

  2. 防止按钮重复点击的思路(js篇)

    最直接的思路可能就是点击按钮后,按钮的事件绑定函数解绑,1s后重新绑定函数 <button id=</button> <script> btn.onclick = fun ...

  3. CG-CTF misc部分wp

    将Misc剥离出来了,已完结(coding gay不想做了) MISC1,图种一听图种,现将图片的GIF改为zip,然后解压得到另一张动图看动图最后一句话为‘都深深的出卖了我’,得到 flag2, 丘 ...

  4. hbuilder模拟器端口

    模拟器 | 端口 夜神安卓模拟器夜神安卓模拟器     62001 逍遥安卓模拟器逍遥安卓模拟器     21503 BlueStacks(蓝叠安卓模拟器)BlueStacks(蓝叠安卓模拟器)    ...

  5. scss定义全局变量引入sass-resources-loader报错

    开发jquery多页应用,引入sass-resources-loader后报 Make sure 'options.resources' is String or Array of Strings. ...

  6. 【JS学习】慕课网7-23编程练习 有关字符串数组

    要求:1.显示打印的日期. 格式为类似“2014年03月21日 星期三” 的当前的时间.2.计算出该班级的平均分(保留整数).同学成绩数据如下:"小明:87; 小花:81; 小红:97; 小 ...

  7. 【LeetCode】拓扑排序

    [207] Course Schedule 排课问题,n门课排课,有的课程必须在另外一些课程之前上,问能不能排出来顺序. 题解:裸的拓扑排序.参考代码见算法竞赛入门指南这本书. class Solut ...

  8. 利用Process类创建多个子进程对象执行任务,主进程负责调度

    import time from multiprocessing import Process def run1(): for i in range(5): print("sunck is ...

  9. jQuery随机抽取数字号代码

    html <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta ...

  10. java基础之toString的使用方法

    toString方法,其返回值类型为String类型,用于返回表示对象值的字符串,返回类名和它的引用地址(散列码 hashCode)toString方法是Object类中的一个实例方法,所有的java ...