TCP/IP 网络基础 (v 0.2b)

来源:互联网 发布:手机高清录屏软件 编辑:程序博客网 时间:2024/06/06 07:31
目录
    1、TCP/IP 概述;
      1.1 什么是IP、ARP、ICMP、UDP;1.2 TCP/IP 网络模型;
    2、IP地址、网络类型、网络切割;
      2.1 IP 地址概说;2.2 网络分类;
        2.21 A类网络:2.22 B类网络:2.23 C类网络:2.24 保留地址;2.3 网络切割;
    3、 路由和网关;
      3.1 路由,此网和彼网沟通的纽带;3.2 网关;
    4 、服务和端口;5、套接字接口;6、关于本文;7、致谢;8、更新日志;9、参考文档;10、相关文档;


++++++++++++++++++++++++++++++++++++++++++++++++++++
正文
++++++++++++++++++++++++++++++++++++++++++++++++++++


1、TCP/IP 概述;

TCP/IP 实际上并不是一个协议,而是一组协议,它包括IP、TCP、UDP、ICMP、ARP等;


1.1 什么是IP、ARP、ICMP、UDP;

IP (Internet Protocol),网际协议;IP是TCP/IP 的最底层,高层协议都要转化为IP包,IP包含了源地址和目的地址,路由决策也发生在IP层;

ARP (Address Resolution Protocol) ,地址解析协方,把IP地址转换为硬件物理地址,比如我们所用的网卡的物理地址,类似aa:bb:cc:dd:ee:ff。

ARP Short for Address Resolution Protocol, a network layer protocol used to convert an IP address into a physical address (called a DLC address), such as an Ethernet address. A host wishing to obtain a physical address broadcasts an ARP request onto the TCP/IP network. The host on the network that has the IP address in the request then replies with its physical hardware address.

There is also Reverse ARP (RARP) which can be used by a host to discover its IP address. In this case, the host broadcasts its physical address and a RARP server replies with the host's IP address.

ICMP (Internet Control Message Protocol),网际报文协议;它包括了数据包的错误、控制等相关信息。比如ping 命令就是利用ICMP来测试一个网络的连接情况的工具;

Short for Internet Control Message Protocol, an extension to the Internet Protocol (IP) defined by RFC 792. ICMP supports packets containing error, control, and informational messages. The PING command, for example, uses ICMP to test an Internet connection

TCP (Transmission Control Protocol),传输控制协议。TCP运行在IP之上,是基于数据流连接和面向的协议,应用程序把数据要经过TCP/IP的分割成若干包,这样数据就以字节流发送和接收,到达目的地后,TCP/IP 再按顺序进行组装。TCP/IP 要保证机器与机器之间的连接的可靠性,还要有纠错。TCP是否被选择,取决于应用程序或服务;

TCP is one of the main protocols in TCP/IP networks. Whereas the IP protocol deals only with packets, TCP enables two hosts to establish a connection and exchange streams of data. TCP guarantees delivery of data and also guarantees that packets will be delivered in the same order in which they were sent.

UDP (User Datagram Protocol) ,用户数据报协议 ,象TCP一样运行在IP之上,是基于数据报或分组的协议,UDP/IP 可以直接发送和接收数据报文,而不必做验证,这一点与TCP/IP 不同。TCP是否被选择,取决于应用程序或服务;

Abbreviated UDP, a connectionless protocol that, like TCP, runs on top of IP networks. Unlike TCP/IP, UDP/IP provides very few error recovery services, offering instead a direct way to send and receive datagrams over an IP network. It's used primarily for broadcasting messages over a network.


1.2 TCP/IP 网络模型;

TCP/IP 的网络模型是如图所示;


2、IP地址、网络类型、网络切割;

TCP/IP 网络的每台计算机都至少有一个(一个计算机有多个网卡是存在的)合法的IP地址,IP地址把此计算机和网络的其它计算机区别开来。由于IP地址分为两部份,一部份代表网络,另一部份代表主机。如果想把一个网络和另一个网络区分开来,就涉及到网络切割。


2.1 IP 地址概说;

IP地址是标识主机在网络中的位置,象是一个门牌号一样。所有IP都经过 Internet Assigned Numbers Authority (IANA)分配。IP地址是由四个字节组成,格式 为A:B:C:D,比如 192.168.1.1 。LinuxSir.Org 的IP是多少?ping LinuxSir.Org 就知道了。

IP都经过 Internet Assigned Numbers Authority (IANA)分配。一般的情况下,IANA只和各国政府机构、学会、ISP、或IDC公司交涉。咱们用的IP地址,都是IDC或ISP提供的。比如LinuxSir.Org 的地址是由网通提供的。我用的ADSL,是铁通提供的。

IP 地址是由四个字节组成,格式 A.B.C.D,每个字节又是由8位二进制数字组成,也就是这样的格式 xxxxxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx 。在A:B:C:D中,前1到3位,可以用来识别网络,其余部份就用来表示网络上的主机。

         A       .          B       .        C        .       D   xxxxxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx

地址中哪几位用来识别网络,哪几位用来识别主机,是通过网络掩码来实现的。网络掩码也是一个四字节的数,如果换算成二进制的数字,对应网络部份为1,而主机部份为0。

比如掩码为 255.255.255.0 ,换算成二进制就是 11111111.11111111.11111111.11111111.00000000 。

      A .        B .  C  . D  255  .      255 . 255 .     0 11111111.11111111.11111111.00000000|-----网络部份----|主机部份|

这表示的意思是网络中的所有主机的IP地址的前三位必须是相同的,也就是A.B.C是相同的,最后一位是主机位,主机位的不同,就把网络中的计算机区分开来。比如 192.168.1.1 和192.168.1.2 是不同的主机。

在 255.255.255.0 这个网络中,从理论上来说,应该有256台主机,但事实上却不是这样。

网络地址和广播地址:

每个网络都有一个网络地址和广播地址,网络地址是把此网区别于彼网的标识,主机部份为0,(二进制),而广播地址的主机部份全为1。

比如192.168.1.0/24的网络。按理论来说,IP地址应该从192.168.1.0到192.168.1.255 ,网络最多有主机数应该有256台,但因为网络地址占用了192.168.1.0,广播地址占用了 192.168.1.255 ,所以在192.168.1.0/24的网络中,最多只能容纳254台机器。

Address:   192.168.1.0           11000000.10101000.00000001 .00000000Netmask:   255.255.255.0 = 24    11111111.11111111.11111111 .00000000Wildcard:  0.0.0.255             00000000.00000000.00000000 .11111111=>Network:   192.168.1.0/24        11000000.10101000.00000001 .00000000 (Class C)Broadcast: 192.168.1.255         11000000.10101000.00000001 .11111111HostMin:   192.168.1.1           11000000.10101000.00000001 .00000001HostMax:   192.168.1.254         11000000.10101000.00000001 .11111110Hosts/Net: 254                   (Private Internet RFC 1918)


2.2 网络分类;

IANA把网络进行分类,分类如下:


2.21 A类网络:

A类网络部份为8位(二进制),主机部份为24位(二进制)。

         A       .           B     .             C    .     Dxxxxxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx|>网络部份<|---->主机部份<--------------|

地址的第一个字节,范围从1到127 ;比如 IP地址 126.1.12.0 就归属于A类网络的地址。


2.22 B类网络:

B类网络部份为16位(二进制),主机部份为16位(二进制)。

         A       .         B        .        C        .   D    xxxxxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx|---->网络部份<-----|-----主机部份<-----|

地址的第一个字节,范围是128-191 ;比如 IP地址 129.13.1.0 就归属于B类网络。


2.23 C类网络:

C类网络部份为24位(二进制),主机部份为8位(二进制)。

         A       .         B        .        C        .   D    xxxxxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx|----------网络部份---------| -主机部份 -|

地址的第一个字节,范围是192-223;比如 IP地址193.1.21.0 就归属于C类网络。


为了简单一点,我们用表格列出:

IP地址的第一个字节       归属网络1-127 A类128-191 B类192-223 C类


2.24 保留地址;

为了保证一些网络能有永远不能接上Internet 上(或通过NAT才能接到Internet),这些地址用于私有网络,比如我们所用的本地网地址 192.168.1.0/24网络就是。下面的一些网络地址是私有的,只能通过NAT转换为公网地址才能访问Internet 。

地址范围     网络类10.0.0.0-10.255.255.255   A类172.16.0.0-172.31.255.255B类192.168.0.0-192.168.255.255 C类127.0.0.1-127.255.255.255回环地址

其中回地址表示数据包的发送和接收都在同一台主机,如果想让一个程序只能在本机上运行,就用这个地址。回环地址一般是用127.0.0.1 。在Linux中,用ifconfig lo就能看到了。


2.3 网络切割;

大型网络可以划分为几个小的网络,这些小的网络被称为子网。划分大型网络地址块为一些小的子网,可以从主机部份进行切分,这样就能形成一个一个的子网。子网掩码可以用来构建超网,例如:192.168.1.2 掩码: 255.255.254.0,也可写成192.168.0.0/23,23代表子网掩码中连续“1”的个数。还可以进行子网划分,例如: 192.168.1.130 掩码: 255.255.255.240,也可写成192.168.1.130/28网络,即:网络ID为192.168.1.128,主机ID为2。

切割网络还要知道十进制到二进制的相互换算,这是比较麻烦的。用笔来算是有点难为人。不过我们可以用一个脚本工具来算。

网络切割脚本下载 ,请点击: 网络切割计算器

下载后要解压;

 

#tar zxvf ipcalclinuxsir.pl.tar.gz
# chmod 755 ipcalc.pl
# ./ipcalc.pl

 

可以指定单个IP和掩码来判断网络,比如:

[root@localhost ~]# ./ipcalc.pl 192.168.1.4/255.255.255.0Address:   192.168.1.4           11000000.10101000.00000001 .00000100Netmask:   255.255.255.0 = 24    11111111.11111111.11111111 .00000000Wildcard:  0.0.0.255             00000000.00000000.00000000 .11111111=>Network:   192.168.1.0/24        11000000.10101000.00000001 .00000000 (Class C)Broadcast: 192.168.1.255         11000000.10101000.00000001 .11111111HostMin:   192.168.1.1           11000000.10101000.00000001 .00000001HostMax:   192.168.1.254         11000000.10101000.00000001 .11111110Hosts/Net: 254                   (Private Internet RFC 1918)

值得注意的是:同一个IP地址,由于掩码不同,此IP地址可能属于不同的网络。所以掩码的设置对于主机来说十分重要。

IP地址:192.168.1.2 掩码: 255.255.254.0,属于192.168.0.0/23网络;

Address:   192.168.1.2           11000000.10101000.0000000 1.00000010Netmask:   255.255.254.0 = 23    11111111.11111111.1111111 0.00000000Wildcard:  0.0.1.255             00000000.00000000.0000000 1.11111111=>Network:   192.168.0.0/23        11000000.10101000.0000000 0.00000000 (Class C)Broadcast: 192.168.1.255         11000000.10101000.0000000 1.11111111HostMin:   192.168.0.1           11000000.10101000.0000000 0.00000001HostMax:   192.168.1.254         11000000.10101000.0000000 1.11111110Hosts/Net: 510                   (Private Internet RFC 1918)

IP地址:192.168.1.2 掩码: 255.255.255.0,属于192.168.1.0/24网络;

Address:   192.168.1.2           11000000.10101000.00000001 .00000010Netmask:   255.255.255.0 = 24    11111111.11111111.11111111 .00000000Wildcard:  0.0.0.255             00000000.00000000.00000000 .11111111=>Network:   192.168.1.0/24        11000000.10101000.00000001 .00000000 (Class C)Broadcast: 192.168.1.255         11000000.10101000.00000001 .11111111HostMin:   192.168.1.1           11000000.10101000.00000001 .00000001HostMax:   192.168.1.254         11000000.10101000.00000001 .11111110Hosts/Net: 254                   (Private Internet RFC 1918)


3、 路由和网关;

3.1 路由,此网和彼网沟通的纽带;

在同一个网段之间(网络ID相同),主机可以互相通讯,比如同一网段的主机相互沟通不需要路由,比如 192.168.1.2和192.168.1.3之间的沟通就不需要路由。如果两个不同的网络(网络ID不同)需要通讯,比如 192.168.1.0/24网络的主机和192.168.2.0/24内的主机 相互沟通,那么需要路由器(或者网关)来指明数据包的“传输路径”来实现这一目的。

常用的做法是用一台多穴主机来作网关(多个网络接口,分别连着外网与内网),使得内网计算机通过网关访问Internet。在linux里面一般用 iptables做NAT(网络地址转换)来实现网关功能,如果充当网关的机器有一个固定IP,我们可以使用SNAT(源网络地址转换);如果充当网关的机器是拨号上网,也就是IP不固定,那么一般我们用MASQUERADE,它可以动态的识别网关的地址。当然,固定ip也是可以用MASQUERADE 的,但是系统资源要耗费大一些。

比如LinuxSir.Org 服务器托管在IDC机房中,机房要为我们提供IP地址、掩码、网关。

在Linux 中,查看本地机的路由是通过route命令来实现的,比如:

 

[root@localhost ~]# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.1.0 * 255.255.255.0 U 0 0 0 eth0
169.254.0.0 * 255.255.0.0 U 0 0 0 eth0
default 192.168.1.1 0.0.0.0 UG 0 0 0 eth0

 

此主机的默认路由就是192.168.1.1 ,至于更多的配置路由的细节,我们将在以后的章节加以讨论。

网关;


4 、服务和端口;

在一台计算机运行的操作系统,如果这台计算机是连接在网络中的,它一定得有一个IP地址。在网络上使用 ip 来标示一个点, 也可以理解为标示一台主机。如果您的计算机分配了两个ip 比如你启用了两块网卡, 在网络上就认为这是不同的两个主机。在这台计算机上可能运行着很多的服务。

端口则是用来标示特定主机的特定服务,比如linuxsir的 www 服务要用 ip:80 来标示。

比如 LinuxSir.Org 的服务器上有FTP、SSH、WWW、IRC等服务,这些服务都用的是一个IP地址。为了能把这些服务运行起来,我们指定了WWW服务器用的是80端口。FTP服务器用的是 21端口等。这块好象不难理解。

查看Linux服务和端口的字典文件位于 /etc/services ,它 是一个字典文件, 并不用来分配端口。其内容有如下类似的:

 

ftp 20/tcp 注:传输命令
ftp 21/tcp 注:传输数据
ssh 22/tcp
telnet 23/tcp

 

有些服务一般是采用默认端口,比如 ftp服务器默认端口是21,ssh服务器端认端口是22,telnet默认端口是23 。当然您可以改变服务的默认端口,以增强系统的安全性;我们在以后的教程中,会涉及到此方面的内容。


5、套接字接口;

套接字接口是进程之间相互通信的网络连接接口。


6、关于本文;

这一节主要讲的是TCP/IP的基础知识,我写这些内容实在是眼高手低。在写的过程中向Pandonny、etoy 、Linuxfish等弟兄请教,才勉强把初稿写出来。至于是不是对的,我不敢说,还是请高手指点吧。有的地方的确需要补充,但又不知道如何下手。

本来五十米的竞赛中,我最快能跑到6.7秒,但现在要求自己跑到6秒,实在是超出我的能力。所以这也是最痛苦的一篇文档。再一次请教求高手指教。

如果说哪有现成的文档,就近抄来,我看没有必要了。现成的文档是多,但做为这个系列文档,我还是希望能出在LinuxSir.Org 上,用最简单的话把比较深奥的理念条理化、清晰化。对于一般用户来说,只要了解一点基础就够了,没有必要知道TCP/IP的所有东西。

还是那句话,学为所用,用为所学。洋为中用,旧文今用,但得更造一下。

谢谢;


7、致谢;

本文得到了pandonny、etoy、Linuxfish 等三位弟兄的帮助,在此致谢;


8、更新日志;

2006/05/30   v0.1b     2006/07/05  v0.2b  更新几个重大错误及加入几个理论性的内容,由一个留言的弟兄更新;特此感谢


9、参考文档;


10、相关文档;

《关于网络概念和网络分类》

 
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 方舟手游飞龙驯服时间不够怎么办 淘宝上买了假货找不到商家怎么办 魅蓝手机一直在开机画面怎么办 在实体店买的手机想退怎么办 淘宝买了东西发货了不想要了怎么办 快递已经发货了不想要了怎么办 锤子手机买了不到十天碎屏了怎么办 唯品会新人专享优惠卷过期了怎么办 我微信被系统说赌博登陆不起怎么办 平湖新居民积分卡怎么办办好办吗 电话卡插上去只能打紧急电话怎么办 不小心充错q币了怎么办 液相色谱柱堵了怎么办处理柱子 扣扣空间宠物消消87关怎么办 微信钱包里的钱忘记密码了怎么办 支付宝绑定银行卡要验证码怎么办 微信红包超出20万限额怎么办 微信充电信的号码话费没到账怎么办 农业银行手机银行转账转错了怎么办 微信钱包里的零钱不见了怎么办 买家说支付宝没钱要微信付钱怎么办 微信红包没绑卡密码忘了怎么办 手机微信红包密码忘了怎么办 qq账号忘了怎么办什么也没绑定 手机银行转账名字对卡号错了怎么办 手机夸行转账卡号输入错了怎么办 移动开通了20元流量卡怎么办? 联通手机充值卡网上充值话费怎么办 提现金额和实际到账不一样怎么办 二冲踏板冷车加油熄火怎么办? qq被盗绑定了别人的银行卡怎么办 如何更改微信支付密码忘记了怎么办 微信钱包没绑银行卡忘记密码怎么办 微信密码忘记了也没绑银行卡怎么办 微信支付密码忘记了没银行卡怎么办 想找回原来的k歌忘了密码怎么办 手机微信钱包支付密码忘了怎么办 微信支付账户被注销了怎么办 微信钱包密码忘了怎么办没绑银行卡 微信钱包密码忘了怎么办不用银行卡 企业网银密码输入三次错误怎么办