关闭

学习笔记1

282人阅读 评论(0) 收藏 举报
分类:

最近在看UNIX网络高级编程,还有适当地了解一些网络知识。记点笔记加深印象(内容部分有从各网站摘录,也有自己总结,未列出出处,敬请谅解):

2013-11-27
IP地址:
A类:1.0.0.0~126.255.255.255,8位网络号(首位0),可用A类网络126个(网络号除去0和127,网络号0代表“本网络”,IP全0代表“这个(this)”,127保留作为本地软件环回测试与本主机的进程之间的通信之用),
24位主机号,每个网络可使用最大主机数量是2^24-2(16777214)(主机号全0是代表网络地址<区别于IP地址>,全1是直接广播地址)
约占总数50%

B类:128.0.0.0~191.255.255.255,16位网络号(首2位10),可用B类网络16383个(2^14-1)(网络号除去128.0不指派),
16位主机号,每个网络可使用最大主机数量是2^16-2(65534)
约占总数25%

C类:192.0.0.0~223.255.255.255,24位网络号(首3位110),可用C类网络2097151(2^21-1)(网络号除去192.0.0不指派),
8位主机号,每个网络可使用最大主机数量是2^8-2(254)
约占总数12.5%

D类和E类分别是作为组播和研究之用。

一般不使用的特殊IP地址
网络号  主机号    源地址使用  目的地址使用  代表的意思
0            0              可以              不可                  在本网络上的本主机
0            host-id    可以             不可                   在本网络上的某个主机host-id
全1         全1          不可             可以                   只在本网络上进行广播(各路由器均不转发)
net-id     全1          不可             可以                   对net-id上的所有主机进行广播(路由器可选是否转发)
127       非全0或    可以            可以                   用作本地软件环回测试之用
          全1的任何数
    
网络IP刚开始是分两级,后来为了提高利用率,在主机号中划分出子网号,成为了三级结构。

网关实质上是一个网络通向其他网络的IP地址,默认网关的意思是一台主机如果找不到可用的网关,就把数据包发给默认指定的网关,由这个网关来处理数据包。现在主机使用的网关,一般指的是默认网关。网关的IP地址是具有路由功能的设备的IP地址,具有路由功能的设备有路由器、启用了路由协议的服务器(实质上相当于一台路由器)、代理服务器(也相当于一台路由器)。

DHCP服务器:
DHCP指的是由服务器控制一段IP地址范围,客户机登录服务器时就可以自动获得服务器分配的IP地址和子网掩码。首先,DHCP服务器必须是一台安装有Windows 2000 Server/Advanced Server系统的计算机;其次,担任DHCP服务器的计算机需要安装TCP/IP协议,并为其设置静态IP地址、子网掩码、默认网关等内容。

DNS服务器:
DNS服务器是计算机域名系统 (Domain Name System 或Domain Name Service) 的缩写,它是由解析器和名服务器组成的。域名服务器是指保存有该网络中所有主机的域名和对应IP地址,并具有将域名转换为IP地址功能的服务器。其中域名必须对应一个IP地址,而IP地址不一定有域名。域名系统采用类似目录树的等级结构。域名服务器为客户机/服务器模式中的服务器方,它主要有两种形式:主服务器和转发服务器。将域名映射为IP地址的过程就称为“域名解析”。

域名解析过程:
当应用过程需要将一个主机域名映射为IP地址时,就调用域名解析函数,解析函数将待转换的域名放在DNS请求,以UDP报文方式发给本地域名服务器。本地的域名服务器查到域名后,将对应的IP地址放在应答报文中返回。同时域名服务器还必须具有连向其他服务器的信息以支持不能解析时的转发。若域名服务器不能回答该请求,则此域名服务器就暂成为DNS中的另一个客户,向根域名服务器发出请求解析,根域名服务器一定能找到下面的所有二级域名的域名服务器,这样以此类推,一直向下解析,直到查询到所请求的域名。

ARP(地址解析协议):
ARP(Address Resolution Protocol,地址解析协议)是获取物理地址的一个TCP/IP协议。某节点的IP地址的ARP请求被广播到网络上后,这个节点会收到确认 其物理地址的应答,这样的数据包才能被传送出去。RARP(逆向ARP)经常在无盘工作站上使用,以获得它的逻辑IP地址。
 
无类别域间路由选择(无分类编址CIDR):
消除了传统的A类、B类和C类地址以及划分子网的概念。
32位IP分成:网络前缀(用来指明网络)和主机号
采用“斜线记法”,即在IP地址后面加上斜线“/”,然后写上网络前缀的位数。
CIDR把网络前缀相同的的连续IP地址组成一个“CIDR地址块”
由于一个CIDR地址块中有很多地址,所以在路由表中就利用CIDR地址块来查找目的网络。这种地址的聚合常称为路由聚合,它使得路由表中的一个项目可以表示原来传统分类地址的很多个路由。路由聚合也称为构成超网。使用CIDR时,路由表项目由“网络前缀”和“下一跳地址”组成。查找路由表时可能会得到不止一个匹配结果,这时遵循最长匹配原则。
按个人理解,也就是先分大块(前缀短的),然后再细分(前缀长的),查下去。
使用二叉树索引,先把路由表项的每一项弄出一个唯一前缀,做成二叉树,在叶结点处存储IP和地址掩码。当收到数据时,根据目的IP逐位检索,若没到叶结点,则丢弃;若到叶结点,则与地址掩码相与,再与该项的网络前缀(不是唯一前缀,唯一前缀只是帮助快速查找的一个机制)作比较,看是否匹配再决定是否转发。


###########################################################################
2013-11-28
int dup(int fd)和int dup2(int fd1,int fd2)
dup是复制fd作为返回值,返回值是当前可用文件描述符的最小数值。
dup2是复制fd1作为返回值,返回值是fd2,如果fd2已打开(指向某一文件表项),则先关闭再打开指向fd1的文件表项,然后返回(fd1必须已打开)

重定向
Unix高级编程习题3.5:
说明下面两条语句的区别
a.out >outfile 2>&1
a.out 2>&1 >outfile
首先1>可以简写成>,0<可以简写成<,为了方便理解,最好把上面的两条语句写成
a.out 1>outfile 2>&1
a.out 2>&1 1>outfile
其次2>&1相当于调用dup2(1,2),也就是说将标准错误重定向到标准输出(终端)。第一条语句,首先将标准输出重定向到文件outfile,然后再将标准错误重定向到标准输出(指向同一个文件表项,v节点表是outfile),此时因为标准输出已经被定向到文件outfile,所以标准输出和标准错误都被定向到文件outfile。
第二条语句,首先将标准错误重定向到标准输出(指向同一个文件表项,v节点表是终端),然后将标准输出重定向到文件outfile,因为此时并没有改变标错误指向的文件表项,所以标准错误仍指向终端,而标准输出指向了outfile。

cmd >file 把 stdout 重定向到 file 文件中;
cmd >>file 把 stdout 重定向到 file 文件中(追加);
cmd 1>file 把 stdout 重定向到 file 文件中;
cmd >file 2>&1 把 stdout 和 stderr 一起重定向到 file 文件中;
cmd 2>file 把 stderr 重定向到 file 文件中;
cmd 2>>file 把 stderr 重定向到 file 文件中(追加);
cmd >>file 2>&1 把 stdout 和 stderr 一起重定向到 file 文件中(追加);
cmd <file >file2 cmd 命令以 file 文件作为 stdin,以 file2 文件作为 stdout;
cat <>file 以读写的方式打开 file;
cmd <file cmd 命令以 file 文件作为 stdin;
cmd <<delimiter Here document,从 stdin 中读入,直至遇到 delimiter 分界符。

>&n 相当于dup2(n,1),把标准输出(默认值)重定向到文件描述符n所指的文件;
<&n 相当于dup2(n,0),把标准输入(默认值)重定向到文件描述符n所指的文件;
<&- 关闭标准输入(键盘);
>&- 关闭标准输出;
n<&- 表示将 n 号输入关闭;
n>&- 表示将 n 号输出关闭;

VPN(虚拟专用网络)技术大概就是可以让异地的主机处在同一个虚拟局域网内的技术。
一些专用地址:
(1)10.0.0.0到10.255.255.255(或记为10/8,它又称为24位块)
(2)172.16.0.0到172.31.255.255(或记为172.16/12,它又称为20位块)
(3)192.168.0.0到192.168.255.255(或记为192.168/16,它又称为16位块)
采用这样的专用IP地址的互连网络称为专用互联网或本地互联网(专用网)。
这些地址只能用在一个机构的内部通信,因特网中的所有路由器,对目的地址是专用地址的数据报一律不转发。当两个异地的专用网需要进行通信,就需要使用VPN技术了,每个专用网络必须有一个全球IP地址,专用网内部主机通过这个全球IP地址和其他的专用网的全球IP地址进行通信,数据报在穿过因特网时会经过加密,
到达目的专用网路由时再解密转发给内部使用专用地址的主机。这就好像是在同一个专用网内,因而称虚拟专用网。另外也有一种类型的VPN,远程接入VPN,用于流动出差人员与公司的保密通信,不作详述。

###########################################################################
2013-11-29
当专用网内部主机需要和因特网通信(不需要加密),这个时候就要使用NAT技术了,NAT路由器需要至少有一个全球IP地址。而且要安装有NAT软件。通过NAT地址转换表将专用地址转为有效的全球IP地址,然后再转发,接受同理。NAT的内部端口(默认网关)是一个专用IP地址,外部端口是一个全球IP地址。

NAT分静态地址转换、动态地址转换、跟端口多路复用(PAT)三种,第一种是一对一固定分配,第二种是动态分配,不转换端口直接占用外网IP的,一般用的是第三种,转换时会连端口一起转换作为源端口,这样应答报文回来时就可以用端口来区分内网主机了。但是从外面来的访问就到不了内网主机,因为在路由器处不知道怎么找到内网主机,有一种方法可以解决,就是将内网的服务器的专用IP和端口绑定(端口NAT映射),例如路由器对收到的目的端口是21的请求和FTP服务器专用IP进行映射。这样请求就能在到达FTP服务器,相应的,对于源端口是21的应答不作转换。

交换机维护了一张 MAC 地址表,用来反映各端口和 MAC 地址的对应关系,以便做好数据转发工作。

路由器的工作原理:
路由器中也要维护一张表格,叫做路由条目表,用来反映如何到达某个 IP 地址网段,同时在路由器中也有 ARP 高速缓存,反映了该路由器各直接网段的 IP 地址和 MAC 地址的对应关系。
假设我们主机pcA到主机pcB需要转过交换机switchA,routerA,routerB,routerC,switchB。
1) 由于 pcB 的 IP 地址并没有和 pcA 在一个网段,所以当 pcA 向 pcB 发送数据时, pcA 并不会直接把数据给 pcB ,而是交给自己的网关,例如 192.168.0.254 ,所以 pcA 首先会 ARP 广播请求 192.168.0.254 的 MAC 地址;
2) pcA 得到网关的 MAC 地址后,以它为数据帧的目标 MAC 地址进行封装数据,并发送出去;
3) routerA 收到该帧后,检查该帧的目标 IP,并到自己的路由表查找如何到达该网段,发现能够到过,并且下一跳地址是 routerB 的 s0 端口,于是将数据重新封装,将源地址改为 s0 端口 MAC 地址,目标 MAC 地址改为 routerB 的 s0 端口 MAC 址址,并发送给 routerB;
4) 中间路由器传递过程同理
5) 最后一个路由(此例为 routerC )收到该帧,发现目标 IP 就在自己的直连网段,于是查看 ARP 缓存,如果找到该 IP 的 MAC 地址,则以该 MAC 地址封装数据发送出去,如果在 ARP 缓存没找到,则发出 ARP 广播,请求该 IP 的 MAC 地址,得到对应的 MAC 地址后,再发送给主机 pcB;

在以上数据传递过程中,我们发现,数据帧的源 IP 和目标 IP 始终是不变的,而经过每个路由进行重新封装数据时 MAC 地址则在不断的变化,总是以自己的地址作为源 MAC 地址,下一跳的地址作为目标 MAC 地址。

 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:14609次
    • 积分:377
    • 等级:
    • 排名:千里之外
    • 原创:22篇
    • 转载:12篇
    • 译文:0篇
    • 评论:0条
    文章分类