Linux网络编程 了解
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网络编程 了解的更多相关文章
- 【深入浅出Linux网络编程】 "开篇 -- 知其然,知其所以然"
[深入浅出Linux网络编程]是一个连载博客,内容源于本人的工作经验,旨在给读者提供靠谱高效的学习途径,不必在零散的互联网资源中浪费精力,快速的掌握Linux网络编程. 连载包含4篇,会陆续编写发出, ...
- 【linux草鞋应用编程系列】_5_ Linux网络编程
一.网络通信简介 第一部分内容,暂时没法描述,内容实在太多,待后续专门的系列文章. 二.linux网络通信 在linux中继承了Unix下“一切皆文件”的思想, 在linux中要实现网 ...
- Linux 网络编程(IO模型)
针对linux 操作系统的5类IO模型,阻塞式.非阻塞式.多路复用.信号驱动和异步IO进行整理,参考<linux网络编程>及相关网络资料. 阻塞模式 在socket编程(如下图)中调用如下 ...
- linux网络编程 no route to host 解决方案
linux网络编程 no route to host 解决方案 [整合资料] (2013-05-13 21:38:12) 转载▼ 标签: net iptables it 分类: Linux 参考资料h ...
- linux网络编程-(socket套接字编程UDP传输)
今天我们来介绍一下在linux网络环境下使用socket套接字实现两个进程下文件的上传,下载,和退出操作! 在socket套接字编程中,我们当然可以基于TCP的传输协议来进行传输,但是在文件的传输中, ...
- Linux网络编程&内核学习
c语言: 基础篇 1.<写给大家看的C语言书(第2版)> 原书名: Absolute Beginner's Guide to C (2nd Edition) 原出版社: Sams 作者: ...
- linux网络编程_1
本文属于转载,稍有改动,以利于学习. (一)Linux网络编程--网络知识介绍 Linux网络编程--网络知识介绍客户端和服务端 网络程序和普通的程序有一个最大的区别是网络程序是由两个 ...
- Linux网络编程入门 (转载)
(一)Linux网络编程--网络知识介绍 Linux网络编程--网络知识介绍客户端和服务端 网络程序和普通的程序有一个最大的区别是网络程序是由两个部分组成的--客户端和服务器端. 客户 ...
- Linux网络编程必看书籍推荐
首先要说讲述计算机网络和TCP/IP的书很多. 先要学习网络知识才谈得上编程 讲述计算机网络的最经典的当属Andrew S.Tanenbaum的<计算机网络>第五版,这本书难易适中. &l ...
- [转] - Linux网络编程 -- 网络知识介绍
(一)Linux网络编程--网络知识介绍 Linux网络编程--网络知识介绍客户端和服务端 网络程序和普通的程序有一个最大的区别是网络程序是由两个部分组成的--客户端和服务器端. 客户 ...
随机推荐
- 使用pip 时报错 Fatal error in launcher: Unable to create process using '"D:\pytghon2.7\python.exe" "D:\python2.7\S
无法创建使用pip.exe创建进程,说白了就是无法启动pip安装插件. 解决方法升级pip: python -m pip install -U pip
- kmp与扩展kmp模板
kmp 1 #include <algorithm> 2 #include <iostream> 3 #include <cstring> 4 #include & ...
- android service 样例(电话录音和获取系统当前时间)
关于android service 的具体解释请參考: android四大组件--android service具体解释.以下将用两个实例具体呈现Android Service的两种实现. 一个是st ...
- 算法竞赛模板 AC自动机
AC自动机基本操作 (1) 在AC自动机中,我们首先将每一个模式串插入到Trie树中去,建立一棵Trie树,然后构建fail指针. (2) fail指针,是穿插在Trie树中各个结点之间的指针,顾名思 ...
- 路过--<全世界谁倾听你>
这首歌大概就是说男生和女生分手了男生一直忘不了女生给他带来的感觉(那种只有那个女生才能给男生带来的喜欢)就算黄昏 还是清晨 男生是男生的清晨 女生是女生的黄昏两个人没有交集了就算雨和歌都停了 风还是会 ...
- MySQL练习题--sqlzoo刷题
首先查看world表的字段: name continent area population gdp capital tld flag SELECT * FROM world: 2.显示人口至少为2亿的 ...
- 前端学习(十)初识js(笔记)
js事件(公有属性) onclick="" 当点击...时! onmouseover="" 当鼠标移入...时!onmouseout="" ...
- Oracle数据库创建与连接
一.Oracle数据库的安装 1.下载Oracle数据库 网址:Oracle 数据库软件下载 | Oracle 技术网 | Oracle 由于需要注册,所以我就没有采用这种下载方式, 右击该网页查看 ...
- vue 条件渲染v-if v-show
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- png图标任意赋色
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...