网络编程基础

1.网络基础知识

1.1 网络的来历

第二次世界大战之后, 美国和苏联迅速进入了冷战对抗的状态,双方都在暗地的较着劲。大家都认为,能否在科学技术上处于领先的地址,是决定战争胜负的关键。1957年苏联成功发射了第一颗人造卫星“sputnik”,震惊了整个西方世界,这个举动极大的刺激了美国。美国当时相对来说也是一个比较厉害的国家。为了防止对美国不利的震惊技术再次出现,1958年,美国总统艾森豪威尔向国会提出在国防部下设一个国防高级研究项目局(Defense Advance Research Project Agency简称DARPA),专门研究未来的军事科技技术。军事技术的发展,单靠个人是不行的。因此,美国向各个商业性组织者和大学提供最新的装备以及
电脑设备,供大家研究。并且希望把各个大型设备电脑连接起来从而实现-------资源共享。
所谓数据共享在当时理解就是并联,就如同电路一样,如果一排路灯采取串联的方式,一个路灯出现故障,所有的路灯都要遭殃。美国国防部担心如果有把所有的数据都保存在军事指挥中心,一旦中心被苏联方面破获并且捣毁,那么全国的军事指挥和部署都将处于瘫痪状态,整个军队就成了瞎子。基于这种考虑,他们设想设计一种分散式的指挥系统,由许多分散的指挥点组成,当其他指挥点被摧毁后剩余的指挥点仍能正常工作,而这些分散的点又能通过某种形式的通讯网取得联系—因此,ARPA网络由此诞生。
1968年,DARPA提出建立ARPA网络,以便于在各科研机构之间,共享科研资源。早期的ARPA网络使用(Network Control Protocol)NCP协议,由于早期网络主要用于军事上,因此 ,它不支持不同类型的操作系统、不同类型的计算机之间的通信,不支持纠错功能。

1.2 TCP协议的产生

1972年,Robert Kahn(罗伯特*卡恩)被DARPA的信息处理办公室雇佣,专门研究卫星和地面的网络通信。1973年春,NCP协议的制定者Vinton Cerf(温顿·瑟夫)也加入了DARPA的信息处理办公室,专门研究封包交换网络。当时DARPA已经开发了ARPA网络、封包无线网和封包卫星网,他们都使用自己的通讯协议交换封包,彼此之间不能互相通讯。为了解决这个问题,Vintin Cerf 和Robert Kahn 开发了TCP协议(Transmission Control Protocol),支持不同封包交换网络之间的通讯。

1.3 TCP/IP协议的产生

1974年,由于实时性数据传输的要求, TCP 协议被分成了TCP和IP(Internet Procotol),TCP协议专门负责检测网络传输中的差错并处理;IP(Internet Procotol)协议专门负责对不同网络进行互联。
什么样的数据有实时性传输要求?
优酷看视频时,如果网络不好,大家是希望看到有少量马赛克的流畅的视频,还是希望看到非常清晰,但非常卡的视频?

TCP协议过于强调可靠性,当出现封包出错时,会要求对方重发,这样会因为处理错误封包,而使得整个网络延迟比较严重,所以为了克服这个缺点,将TCP分成了TCP和IP协议,同时加入了UDP(User Datagram Protocol)协议。这样对于实时性要求比较高,可靠性要求相对较低的通信,采用UDP + IP协议来通信。对于可靠性要求比较高的,采用TCP + IP协议来通信。
例如:
实时性价高(UDP)-----------QQ视频数据
数据完整(TCP)-----------QQ登录

1.4 最终网络协议关系图—物联网

通过我们历史的了解,我们最终的得出以下的结论:
在这里插入图片描述

我们可以把TCP协议理解买了保险的包裹,它对数据的完整性要求较高,邮寄速度合适即可。UDP协议理解为没有买保险的包裹,它对数据的完整性要求不高,但是对邮寄的物品要求尽可能快的到达。最终这两种协议都通过我们的IP协议统一的转发给其他的网络。

2. 网络结构

2.1 简单的家庭网络

这里以最简单的家庭网络举例:
在这里插入图片描述

家庭网络一般是通过Modem拨号上网,然后通过家庭路由器,将网络连接到家里所有的可以联网的设备。家庭网络中,所有设备联网方式完全相同,所以只需要学习一个设备和其他设备之间如何通讯,即可理解家庭网络。这里我们通过telnet和百度两个网络应用,来研究A电脑如何跟其他设备进行通讯:

  1. telnet(远程登录)本地计算机B
    搞清楚计算机A如何跟局域网内部设备通讯。

  2. 百度
    搞清楚计算机A如何跟局域网外部的设备通讯

2.2 网络参数及基本概念了解

2.2.1 IP地址

IP地址 192.168.0.128 [网络号 + 主机] 027-1818188
是网络中主机的唯一标识,它由网络地址和主机号组成。网络地址是子网的唯一标识,类似于电话号码的区号;主机号是子网内每台主机的编号。在现在(IPv4)的网络中,IP地址是32bit的二进制数,采用大端字节序:
表示方法(点分十进制)
直接使用二进制数,不容易记忆,为了方便记忆,将32位二进制码划分为4个字节,每个字节转化成相应的十进制数,字节之间用“.”来分隔,这种表示方法,称之为“点分十进制表示法”。
例:192 .168 .1 .1
11000000 10101000 00000001 00000001
IP分类
A 类[0,127] 0.0.0.0-127.255.255.255 它们之前相差2的7次方 - 1
B 类[128,191] 128.0.0.0-191.255.255.255 它们之前相差2的6次方 - 1
C 类[192,223] 192.0.0.0-223.255.255.255 它们之前相差2的5次方 - 1
D 类[224,239] 224.0.0.0-239.255.255.255 它们之前相差2的4次方 - 1
E类 保留 192.168.0.128
在这里插入图片描述

注意:所有的网络都必须扣除两个保留地址:”0“为网络号,”255“为广播,”1-254“分配 给主机使用

2.2.2 子网掩码

(1)获得网络号
IP地址:192.168.1.88
默认子网掩码:255.255.255.0
网络号:192.168.1.0
计算方法
192.168.1.88二进制为:11000000 10101000 00000001 01011000
255.255.255.0二进制为:11111111 11111111 11111111 00000000
二者进行 “&” 运算得:11000000 10101000 00000001 00000000
即:192.168.1.0

(2)获得主机号
IP地址:192.168.1.88
子网掩码: 0. 0. 0.255
主机号:88
计算方法
192.168.1.88二进制为:11000000 10101000 00000001 01011000
0. 0. 0.255二进制为:00000000 00000000 00000000 11111111
二者进行 “&” 运算得:00000000 00000000 01011000
即:88

注意:子网掩码无特殊说明则默认为255.255.255.0

2.2.3 网关

顾名思义,网关(Gateway)就是一个网络连接到另一个网络的“关口”。也就是网络关卡。网关实质上是一个网络通向其他网络的IP地址。

默认网关一般填写192.168.x.1或者192.168.x.254

2.2.4 DNS服务器

在我们的实际生活中,我们发现,我们通过点分十进制的IP地址也不是很方便,尤其是在大规模的网络环境中,很容易就就记混淆了。因此,就有了我们的DNS服务器,它是把我们人类便于理解的单词和名字转化成我们相应的IP地址。它的作用就是解析我们的域名。
例如:我们的可以ping一下,百度www.baidu.com

常用dns服务器:114.114.114.114
8.8.8.8

2.2.5 端口

我们设置了我们的IP地址,网关,子网掩码之后。我们基本就可以进行网络通信了。我们可以把数据包从A主机转发到B主机。B主机基本上就接收到了我们的数据了。那么我们的B主机接收到了数据,究竟给那个进程呢?例如,我们开了CF,LOL,QQ,这样的游戏进程,那么究竟把数据给谁呢?这里就不详细说明。
其实本质上我们的端口就是把接收到的数据转发给指定的进程。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值