马哥Linux学习笔记之二——网络基础

1.MAC(Media Access Control,介质访问控制)

是解决底层数据通信冲突的解决方案。因此,给每一个接入这样网络的主机一个id标示符,这个id标示符就叫做MAC地址。

 

2.CSMA/CD(Carrier Sense Multipath Access Collision Detection,载波侦听多路访问冲突检测),线型网络

以太网Ethernet最核心的标志。

 

3.Token-Ring(IBM)技术

环形网络解决冲突的方案。但是由于IBM的专利限制没能推广开来。

 

4.星形网络

用Hub来连接好多主机,这样就形成了星形网络。

这是一种变形的总线结构。还是一根线,只不过不是一根线,而是一个设备,但实际上Hub内部还是一根线,而且Hub搞出了好多接口,这样就可以方便添加主机了。它逻辑上还是总线型网络。

 

5.网桥

可以粗略理解成一个中继器,用来放大信号什么的。

网桥是连接两个网络的一个设备。当一个局域网的设备太多的时候冲突就会特别容易发生,利用MAC来处理的话,通信的效率会大大下降,所以网桥就产生啦!就好像一个家里的人多了一样,需要分家了,但是他们之间还是要通信的。所以就将一个大的局域网分成几个小的网络,这几个小的网络之间利用网桥连接。注意区别于Internet。

网桥内部有一个表table,可以用来判断发过来的数据包是不是发送给这个小的网络的,要是就是发送给这个小的网络的话那么就不需要网桥的转发。

 

6.交换机

网桥的将一个大网切换成两个小网,那么发生碰撞的可能性就降低了一半。

取一个极限的情况就是:网桥的一个出口只有一个主机。----->这个设备就是交换机!!

交换机最核心的就是其内部的那张表!

交换机隔离的不是广播,它隔离的是冲突。在一个小网的内部又可以叫做冲突域。

 

7.连接层的硬件设备

Hub集线器 --> 网桥 --> Switch交换机

 

8.IP地址存在的原因

交换机隔离的不是广播,它隔离的是冲突。所以,用再多的交换机都不能解决广播风暴(太多的广播)的问题,所以就产生了一个交换机所在的一个小网的总的地址,我们将它叫做逻辑地址(他是模拟的,他是用来标识交换网络的),又将它叫做IP地址。

MAC地址的工作机制就是用来实现广播的!所以要用逻辑地址(IP地址)来进行更好的转发。(NOTE:这似乎有是一个寻求合适粒度的问题)

IP只有一个简单的作用:他是用来在网络之间转发报文的。他也只是用来识别是本地网络还是远程网络的

陈不二

 

IP地址与MAC地址在数据包转发过程中的变化

IP地址一直不变,而MAC地址一直变化(因为MAC地址是不能跨网络的)

 

9.ARP(Address Resolution Protocol)

地址解析协议。将IP地址解析成MAC地址。

MAC地址是一个信封,IP可以看成是信的开头。发送(转发)的过程中要不断的换信封,但是信的开头不能换。

 

10.MAC存在的必要性

IP地址是用来寻找到在一个网络中,最终还是要靠MAC来广播。MAC是用来标记本地通信的,他不断传,不断变化,因为它MAC就只在本地网络中实现自身价值,不在这个小网络中它就要变化啦。

 

11.路由自动学习产生路由表

RIP协议、RIP2 

 

12.默认网关?????

可以理解成交换机与路由器之间的接口。

 

 13.端口号

每一台主机的可用端口是:0-65535

对于客户端,随机使用一个没有被使用的接口就行。而服务器端就不会,一个端口后面有一个进程在监听。

http://www.cnblogs.com/chenbuer/p/3842281.html    

 

14.IP地址

主机位全0:网络地址

主机位全1:广播地址

ICANN,就是跟它买IP地址

 

15.路由表

一个路由条目中,当目标地址是一个主机我们成为主机路由,目标地址是一个网络的时候就是网络路由。在路由的时候选择是最佳匹配。

路由汇聚,是将很多小的子网合并成一个大的网络,这样就可以提高路由器性能减少寻找到要找的那个路由条目的时间。

 

 16.配置文件

系统在启动的时候会读取配置文件。

 

 17.IP属于内核,不属于网卡

 

 18.Linux中的网卡,对于Linux来说,每一个网络接口都有一个名称:

  lo:本地回环

  以太网卡:ethX

  pppX点对点的

 在ubuntu中他的名字是在  /etc/udev/70-persistent-net.rules 中被定义

 

19. ifconfig

  显示处于活动状态的网卡的信息

   -a

  ifconfig ehtX IP/mask   设置特定网络接口的IP和掩码,立即生效,但是不会永久生效

  ifconfig ethX [up/down]   启用或者关闭特定的网络接口

 

20. 在unbuntu中用 /etc/init.d/networking 来配置网络服务

  网络配置文件 /etc/sysconfig/network (这儿不是在ubuntu中的,是在redhat中的)

  网络接口配置文件 /etc/sysconfig/network-scripts/ifcfg-INTERFACE_NAME (这儿不是在ubuntu中的,是在redhat中的)

 

21.route命令,查看本地路由表

  -n 以数字方式显示主机或端口等相关信息  

  add 添加路由

    -host:主机路由

    -net:网络路由

      -net 0.0.0.0默认的

  route add -net(-host) gw NEXTHOP

  del 删除

    -host

    -net

 

22. DHCP(Dynamic Host Configuration Porotol,动态主机配置协议)

http://www.cnblogs.com/LittleHann/p/3705263.html

注意:IP地址是配置在操作系统上的。

DHCP服务器上有一堆IP地址可以分配给申请IP地址的主机,这样的一个表叫做地址池。当主机一关机,IP就释放回收。他有一个lease租约,当时间快到了就要在租约到来之前要续租

广播方式请求IP地址。我的mac只是*****,谁可以给我提供一个IP地址。服务器收到后还是广播回去(因为此时主机还是没有IP地址,只有mac地址,没有IP地址那就只能广播啦)。主机确定用哪一个IP地址的时候还需要广播通知用谁的地址。

DHCPDISCOVER 广播,请求

DHCPOFFER 广播,提供IP报文

DHCPREQUEST 广播,告诉选择哪一个IP地址

DHCPACK 广播,提供IP的服务器确认

DHCP是不能跨网络提供服务的。

 

23.tcp/ip配置的时候需要的参数

  IPADDR

  NETMASK

  GATEWAY 这个可有可以没有,没有大不了就是不跟外网联系了。

  DNS 可以有,可以没有

  

24.NFS(Network file system,网络文件系统)

文件系统是工作在内核空间的,包括NFS,ext3。

概念讲解:在一个网络中,主机A中有一个未被挂载的设备(比如说一个分区),通过网络,我们将它挂载在另一个主机B上,当我们在网B上相应的目录写入数据的时候就通过网络写入在主机A中本地的设备。所以主机B就像访问本机主机一样访问远程主机A上的设备

LPC(Local Process Call),本地过程调用

RPC(Remote Process Call),远程过程调用。stub(存根)可以看成是客户端的RPC程序,服务器端的程序是rpc server,对于Linux而言,提供rcp服务的程序叫做Portmap(就行web和httpd、nginx之间的关系),监听在111/tcp和111/udp

RPC是一种编程技术,是一个协议,简化分布式应用程序的开发,他让两个主机看上去就像一个主机,这样程序员在分布式开发的时候就不用进行网络数据的分装了。用它进行数据交换既可以基于二进制,又可以基于文本格式(xml rpc)。发展到后来,有了SOAP(Simple Object Access Protocol,简单对象访问协议),他是一种轻量级的xml rpc。

ftp、http、rpc都是实现数据交换,之间有很多相同的东西。

NFS不是一个服务,而是一个文件系统,它在网络工作才能成为NFS,他是基于RPC协议进行的,RPC是基础,NFS基于RPC工作。
NFS由于是用户认证很薄弱,所以我们只能在内网上通信,一般只能UNIX和Linux之间,不能与windows通信。windows用网上邻居进行通信。

 

25.LAMP(Linux+Apache+Mysql/MariaDB+PHP/Python一组成用来搭建动态网站或者服务器的开源软件),他们本身都是各自独立的程序,但因为京城放在一起使用,共同组成了一个强大的Web应用程序平台。从网站的流量上来说,70%以上的访问流量是LAMP来提供的。LAMP是最强大的网站解决方案。

 

26.iptables & netfilter

Linux下面的网络防火墙。

netfilter是真正起到防火墙作用的框架(Frame),工作在内核中,可以放入规则。iptables,数据报文过滤,是NAT、mangle等规则生成的工具,工作在用于空间,他是一个规则生成器,是一个APP,可以写规则,并放入内核中。

防火墙?主要目的就是工作在主机边缘,对进出主机的数据报文进行检测,将数据与规则(匹配标准、处理办法)标准进行检查,这样的一组组件(硬件或者软件)叫做防火墙,有网络防火墙和主机防火墙。对于网络防火墙,对于网络内部的数据包是不能检测的,家贼难防。所以防火墙是一个框架Framework。所以防火墙说白了就是数据报文过滤。

内核中有一个TCP/IP协议栈,网络数据从网卡进来就要进入这个内核的协议栈。根据路由表(路由决策),在协议栈中我们检查目标ip是不是本机的ip,是的话就送入目标进程,不是的话就转发出去,在/proc/sys/net/ipv4/ip_forward中修改本机是否开放转发功能。路由决策发生在,通过网卡之后,进入TCP/IP功能上,就立即进行路由决策。

hook function:钩子函数。共有prerouting,input,output,forward,postrouting

所以内核上有五个PREROUTING,INPUT,OUTPUT,FORWARD,POSTROUTING

链是什么?

netfilter就是工作在TCP/IP协议栈上的hook

filter(过滤),表

NAT,在PREROUTING、POSTROUTING进行。表

mangle(拆开、修改、封装),表

raw

数据包过滤匹配流程

图片来自http://www.2cto.com/Article/201307/224402.html

每个链上的功能table都是有优先级次序的,上面的图就显示了这样的次序。

能否使用自定义的链?可以使用自定义链,但只在被调用时候才能发挥作用,而且如果没有滴定义链中的任何匹配规则,还应该有返回机制。用户可以删除自定义的空链,默认链无法删除。

iptables的命令可以参考http://www.cnblogs.com/wangkangluo1/archive/2012/04/19/2457072.html

 

27.ICMP(Internet Control Message Protocol,Internet控制报文协议)

端口号0~65535,其中0~1023之间的端口只有管理员可以使用,大于5000客户端可以使用。

 

28.TCP协议中的几个装套标志很重要:ACK、SYN、FIN

http://www.cnblogs.com/vamei/archive/2012/12/16/2812188.html

其中ACK标志Acknowlegment number是否有用,而SYN表示位是用来标识这个包是client端用来请求连接server或者server连接client,而FIN是用来标识结束的四次握手断开时候用的。

 

29.TCP的状态转换可以参考

http://www.cnblogs.com/keepsimple/archive/2013/04/28/3049044.html

(上图中虚线表示server状态转换,实现表示client状态转换)在四次握手的时候client发送了FIN,等待server发送ACK,此时是WAIT1状态,一旦收到server收到ACK,进入WAIT2状态,server发送了ACK之后,client不能立即进入CLOSE,而是要进入TIME WAIT。

 

posted @ 2014-07-15 20:09  陈不二  阅读(798)  评论(0编辑  收藏  举报
yes, javascript 拯救世界