网络编程(1):计算机网络与TCP/IP网络模型
2017-02-21 17:43
471 查看
目录:
计算机网络模型
物理层
数据链路层
传输层
网络层
应用层
参考资料
网络模型
网络架构分OSI七层网络模型与TCP/IP五层网络模型,其中七层网络架构是一种理想的网络协议模型,而TCP/IP是在其基础上进行简化并成功应用在实际的网络模型。
由于TCP/IP的五层网络模型才是现实中可用的模型,所以以下我们重点分层讲解每一层是如何实现通信的。
物理层
数据链路层
网络层
传输层
应用层
参考文章:
RFC文档目录(中文)
RFC Editor
W3C
HTTP/1.1 协议全解
计算机网络模型
物理层
数据链路层
传输层
网络层
应用层
参考资料
网络模型
网络架构分OSI七层网络模型与TCP/IP五层网络模型,其中七层网络架构是一种理想的网络协议模型,而TCP/IP是在其基础上进行简化并成功应用在实际的网络模型。
OSI七层网络模型: * 应用层:FTP、TELNET、HTTP(基于TCP),SNMP、TFTP、NTP(基于UDP) * 表示层:无 * 会话层:无 * 传输层:TCP、UDP * 网络层:IP、ARP、RARP、IGMP、ICMP * 数据链路层:PPP、CSMA/CD * 物理层:802.2、802.3标准 |
TCP/IP五层模型 * 应用层:FTP、TELNET、HTTP(基于TCP),SNMP、TFTP、NTP(基于UDP) * 传输层:TCP、UDP * 网络层:IP、ARP、RARP、IGMP、ICMP * 数据链路层:PPP、CSMA/CD * 物理层:802.2、802.3标准 PS:有时会将数据链路层与物理层统称为网络结构层,所以也有TCP/IP四层协议的说法。 |
物理层
作用:实现端到端之间的电信号传输。 |
传播介质 光纤 单模光纤(工艺成本高,单路,传输效率高,距离更远) 多模光纤(工艺成本低,多路,传输效率低,距离较短) 电缆 CAT-5标准电线(与RJ-45接头搭配使用) 同轴电缆 |
作用:实现端与端之间的数据帧的通信 |
相关原理与规则: |
*网卡负责将电信号编码解码,分别有以下三种编码方式: 不归零编码 不归零反向编码 曼切斯特编码 NOTE:曼切斯特编码的时钟是不归零编码的两倍,这样它才能自带时钟,而且能自己检查数据的正确性,所以在网络传输中通常是使用曼切斯特编码,网卡把曼切斯特编码解析成不归零编码。 |
*网络数据帧是多帧结构: TCP/IP协议有五层,除了物理层,其余四层都会对数据包进行封装,而且这种封装是一层套一层的,如我现在要发送一个HTTP报文的过程如下: 报文内容-》HTTP(content)-》TCP(HTTP(content))-》IP(TCP(HTTP(content)))-》。。。 解报文就是以上过程的逆向,所以本质上每一层本质上就是一个协议族,能处理对应该层相应的报文格式,能进行装箱,解箱,转发、解析的操作。 |
相关网络协议: |
1、PPP(point-to-point,点对点协议) 点对点协议(PPP)为在点对点连接上传输多协议数据帧传输提供了一个标准方法。 PPP协议是一种点——点串行通信协议。PPP具有处理错误检测、支持多个协议、允许在连接时刻协商IP地址、允许身份认证等功能,还有其他。PPP提供了3类功能:成帧;链路控制协议LCP;网络控制协议NCP。PPP是面向字符类型的协议。 |
2、CSMA/CD(carrier sense multiple access with collision detection,带冲突检测的载波监听多路访问技术) 处理总线型网络中数据帧发送的实现。 它的工作原理是: 发送数据前 先侦听信道是否空闲 ,若空闲,则立即发送数据。若信道忙碌,则等待一段时间至信道中的信息传输结束后再发送数据;若在上一段信息发送结束后,同时有两个或两个以上的节点都提出发送请求,则判定为冲突。若侦听到冲突,则立即停止发送数据,等待一段随机时间,再重新尝试。 其原理简单总结为:先听后发,边发边听,冲突停发,随机延迟后重发。 |
作用:实现IP数据包的路由选择\实现端对端的IP数据包传输 |
相关原理与规则: |
集线器(中继器)、交换机、路由器三者之间的区别: 1、集线器:对输入进来的数据不加以理解就广播出去,容易影响带宽,拖慢网速,但物理结构简单,成本低。 交互器,交换机会维护一个地址查询表,每当有接收到数据报文,就会更改对应的地址查询表中对应的端口所对应的mac地址,然后再查询目的mac地址找到对应的端口转发出去。 路由器:自身会拥有IP地址,能理解IP报文,能实现局域网与局域网之间的通信 2、集线器、交互机用于局域网通信,路由器用于互联网通信。 3、集线器因为容易浪费带宽,所以已经被淘汰了。而现在路由器基本还兼具交换机的功能。 |
MAC地址与IP地址的区别: MAC地址是网卡是的唯一标识符号,是从硬件层级上定义的设备ID。 如: 00:A3:03:51:0E:AC,其中前三位字节(00:A3:03)是由美国电子工程师协会分配给企业的,用来表示是什么公司的产品,而后三位字节是厂家自己定义的。 IP地址,是通过统一的IP协议标准,从逻辑层上定义的设备ID。 如: 192.168.100.1/24,其中IP地址是由两个部分组成(网段地址+主机号码),其中24为子网掩码,表示前3个字节(24BIT)是网段地址,而最后一字节是主机号码。 一共有3中类型的IP地址,分别是A、B、C类IP,上面例子是C类的IP地址,也是最为常见的。 IP地址可以表示一个完整的主机地址,也可以表示为一个网络的地址,主机地址Ip的主机号为0,网段地址ip的主机号非零。 |
路由表与RIP、EIGRP、OSPF路由协议: 路由表的种类: 静态路由表:通过手动配置得到,永久不变。 动态路由表:通过RIP、EIGRP路由协议自动生成、更新。 静态路由表和动态路由表可以混合存在。 路由协议的基本原理: 当IP子网中的一台主机发送IP分组给同一IP子网的另一台主机时,它将直接把IP分组送到网络上,对方就能收到。而要送给不同IP于网上的主机时,它要选择一个能到达目的子网上的路由器,把IP分组送给该路由器,由路由器负责把IP分组送到目的地。如果没有找到这样的路由器,主机就把IP分组送给一个称为“缺省网关(default gateway)”的路由器上。“缺省网关”是每台主机上的一个配置参数,它是接在同一个网络上的某个路由器端口的IP地址。 路由器转发IP分组时,只根据IP分组目的IP地址的网络号部分,选择合适的端口,把IP分组送出去。同主机一样,路由器也要判定端口所接的是否是目的子网,如果是,就直接把分组通过端口送到网络上,否则,也要选择下一个路由器来传送分组。路由器也有它的缺省网关,用来传送不知道往哪儿送的IP分组。这样,通过路由器把知道如何传送的IP分组正确转发出去,不知道的IP分组送给“缺省网关”路由器,这样一级级地传送,IP分组最终将送到目的地,送不到目的地的IP分组则被网络丢弃了。 目前TCP/IP网络,全部是通过路由器互连起来的,Internet就是成千上万个IP子网通过路由器互连起来的国际性网络。这种网络称为以路由器为基础的网络(router based network),形成了以路由器为节点的“网间网”。在“网间网”中,路由器不仅负责对IP分组的转发,还要负责与别的路由器进行联络,共同确定“网间网”的路由选择和维护路由表。 路由动作包括两项基本内容:寻径和转发。寻径即判定到达目的地的最佳路径,由路由选择算法来实现。由于涉及到不同的路由选择协议和路由选择算法,要相对复杂一些。为了判定最佳路径,路由选择算法必须启动并维护包含路由信息的路由表,其中路由信息依赖于所用的路由选择算法而不尽相同。路由选择算法将收集到的不同信息填入路由表中,根据路由表可将目的网络与下一站(nexthop)的关系告诉路由器。路由器间互通信息进行路由更新,更新维护路由表使之正确反映网络的拓扑变化,并由路由器根据量度来决定最佳路径。这就是路由选择协议(routing protocol),例如路由信息协议(RIP)、开放式最短路径优先协议(OSPF)和边界网关协议(BGP)等。 转发即沿寻径好的最佳路径传送信息分组。路由器首先在路由表中查找,判明是否知道如何将分组发送到下一个站点(路由器或主机),如果路由器不知道如何发送分组,通常将该分组丢弃;否则就根据路由表的相应表项将分组发送到下一个站点,如果目的网络直接与路由器相连,路由器就把分组直接送到相应的端口上。这就是路由转发协议(routed protocol)。 路由转发协议和路由选择协议是相互配合又相互独立的概念,前者使用后者维护的路由表,同时后者要利用前者提供的功能来发布路由协议数据分组。下文中提到的路由协议,除非特别说明,都是指路由选择协议,这也是普遍的习惯。 常用路由协议: RIP EIGRP OSPF |
一个完整的IP数据包发送过程: IP数据包的内网发送过程: IP协议调用ARP协议,检测是否内网中是否有目标IP地址 获得内网中的目标IP设备所对应的MAC地址,并组装成IP报文发送,finsih。 IP数据包的外网发送过程: IP协议调用ARP协议,检测是否内网中是否有目标IP地址 获取制定网关、默认网关(路由器)的mac为目标MAC,将IP报文发往网关 路由器收到IP报文会查询路由表,若路由表有该IP且指向外网则使用对用端口转发给下一个路由器(将目标mac地址替换成端口对应的mac地址) 若路由表是指向内网,这发送到自身内网所对应的设备(将目标mac地址替换成端口对应的mac地址) 若路由表无有效查询,则转发到省缺的端口,从而传递给下一个路由设备(将目标mac地址替换成端口对应的mac地址) NOTE:路由表的内容与省缺转发端口的选择,均由路由协议决定。 NOTE:因为IP地址是IP协议定义出来的逻辑地址,在实际的信号通信还得靠MAC地址,所以这就是IP数据包在传递中需要不断的替换MAC的原因。 |
IP地址与域名(domain)的互换: IP地址除了可以与MAC地址映射之外,还可以与域名(domian)进行映射。 不过IP地址与Domain的映射更多的是解决应用层的事情,可以让人们更好地记忆网络服务的地址。 |
DHCP(dynamic host configuration protocol,动态主机配置协议) 工作流程: 设备发送DHCP探测包,检测附近是否有能提供DHCP服务的设备 提供DHCP的设备检测的探测包后,则返回一个响应包 进行连接认证,分配IP地址 若IP地址不够,则可以通过NAT来解决问题,本质上就是用一个计算机作为代理,统一接收IP再转发出去。 |
IPV4 与 IPV6: |
相关协议 |
IP: IP的责任就是把数据从源传送到目的地。它不负责保证传送可靠性,流控制,包顺序和其它对于主机到主机协议来说很普通的服务。 |
ARP(address resolution protocol): 地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。 上面所提及的ARP广播的网络上的主机这句话是分局域网与广域网的,对于局域网,就是网内的所有主机。对于广域网就是将要转发的一下个路由器,就是为了获取下一个路由器的mac地址。 |
RARP(reverse address resolution protocol): 反向地址转换协议(RARP:Reverse Address Resolution Protocol) 反向地址转换协议(RARP)允许局域网的物理机器从网关服务器的 ARP 表或者缓存上请求其 IP 地址。网络管理员在局域网网关路由器里创建一个表以映射物理地址(MAC)和与其对应的 IP 地址。当设置一台新的机器时,其 RARP 客户机程序需要向路由器上的 RARP 服务器请求相应的 IP 地址。 本质上就是通过RARP协议获取局域网内自身机器的IP地址。 |
ICMP(internet control message protocol): ICMP是(Internet Control Message Protocol)Internet控制报文协议。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。 实际应用: ping命令 其目的就是让我们能够检测网路的连线状况﹐ |
IGMP(internet group management protocol): Internet 组管理协议称为IGMP协议(Internet Group Management Protocol),是因特网协议家族中的一个组播协议。该协议运行在主机和组播路由器之间。IGMP协议共有三个版本,即IGMPv1、v2 和v3。 |
作用:提供端对端的数据传输接口。(端到端:两台计算机之间) 传输层的任务是根据通信子网的特性,最佳的利用网络资源,为两个端系统的会话层之间,提供建立、维护和取消传输连接的功能,负责端到端的可靠数据传输。在这一层,信息传送的协议数据单元称为段或报文。 网络层只是根据网络地址将源结点发出的数据包传送到目的结点,而传输层则负责将数据可靠地传送到相应的端口。 |
相关原理与规则: |
TCP的三次握手实现连接: |
TCP的四次握手实现取消连接: |
相关协议: |
TCP:面向连接、可靠、基于字节流的传输层通信协议, 在IP数据报的基础上提供以下功能: 差错检测 差错纠正 队列管理 重复消除 流量控制 拥塞控制 它是面向连接的,所以它是一个双工的协议,每个操作都会得到相应的确认,从而确保每个操作是否成功与该如何去纠错与调整。 因为提供了差错检测与差错纠正,所以得知TCP与UDP一样有差错检测的功能,通过差错检测得知是否有传输失败的情况,若有则对整个数据包放弃,并且申请重传。 因为有重传的存在,所以需要对发送的队列进行精准的管理,以及多重复多发送的数据进行覆盖和舍弃。 还能根据当前网络的相应与状态,控制流量提供数据传输的成功率。 对于已经发送的网络拥塞,还是通过快重传等手段进行相应。 |
UDP:面向无连接、不可靠的传输层通信协议 因为UDP协议本质上就是对IP协议的一些扩充,所以UDP协议就和IP协议一样是面向无连接、不可靠的,但也获得效率高、实时性等优点。 而主要的扩展就是差错检测!!!就是能对每个数据包检测是否有错,若错误则舍弃。 |
作用:为各种应用提供适用的通信接口。 |
相关原理与规则: |
应用层本质上就是为各种各样的应用提供相应的high-level的网络协议,实现多种类型的数据传输。 |
相关协议 |
DNS(Domain Name System,域名系统,域名解析IP): 因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。 所有通过域名发起的网络请求首先会先通过DNS协议解析获取IP地址,然后才能正式的访问相应的服务。 |
FTP(File Transfer Protocol,高效文件传输): FTP(File Transfer Protocol,文件传输协议) 是 TCP/IP 协议组中的协议之一。FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端。其中FTP服务器用来存储文件,用户可以使用FTP客户端通过FTP协议访问位于FTP服务器上的资源。在开发网站的时候,通常利用FTP协议把网页或程序传到Web服务器上。此外,由于FTP传输效率非常高,在网络上传输大的文件时,一般也采用该协议。 |
SMTP(Simple Mail Transfer Protocol,邮件发送): SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP协议属于TCP/IP协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。通过SMTP协议所指定的服务器,就可以把E-mail寄到收信人的服务器上了,整个过程只要几分钟。SMTP服务器则是遵循SMTP协议的发送邮件服务器,用来发送或中转发出的电子邮件。 它使用由TCP提供的可靠的数据传输服务把邮件消息从发信人的邮件服务器传送到收信人的邮件服务器。跟大多数应用层协议一样,SMTP也存在两个 端:在发信人的邮件服务器上执行的客户端和在收信人的邮件服务器上执行的服务器端。SMTP的客户端和服务器端同时运行在每个邮件服务器上。当一个邮件服 务器在向其他邮件服务器发送邮件消息时,它是作为SMTP客户在运行。 SMTP协议与人们用于面对面交互的礼仪之间有许多相似之处。首先,运行在发送端邮件服务器主机上的SMTP客户,发起建立一个到运行在接收端邮件服务 器主机上的SMTP服务器端口号25之间的TCP连接。如果接收邮件服务器当前不在工作,SMTP客户就等待一段时间后再尝试建立该连接。SMTP客户和服务器先执行一些应用层握手操作。就像人们在转手东西之前往往先自我介绍那样,SMTP客户和服务器也在传送信息之前先自我介绍一下。 在这个SMTP握手阶段,SMTP客户向服务器分别指出发信人和收信人的电子邮件地址。彼此自我介绍完毕之后,客户发出邮件消息。 |
SNMP(Simple Network Manage Protocol,实现对网络节点的管理与控制): SNMP是基于TCP/IP协议族的网络管理标准,是一种在IP网络中管理网络节点(如服务器、工作站、路由器、交换机等)的标准协议。SNMP能够使网络管理员提高网络管理效能,及时发现并解决网络问题以及规划网络的增长。网络管理员还可以通过SNMP接收网络节点的通知消息以及告警事件报告等来获知网络出现的问题。 |
HTTP/HTTPS(HyperText Transfer Protocol,能传输多种文件、数据类型的协议): 超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。1960年美国人Ted Nelson构思了一种通过计算机处理文本信息的方法,并称之为超文本(hypertext),这成为了HTTP超文本传输协议标准架构的发展根基。Ted Nelson组织协调万维网协会(World Wide Web Consortium)和互联网工程工作小组(Internet Engineering Task Force )共同合作研究,最终发布了一系列的RFC,其中著名的RFC 2616定义了HTTP 1.1。 |
TELNET(Telnet是常用的远程控制Web服务器的方法。): Telnet协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的能力。在终端使用者的电脑上使用telnet程序,用它连接到服务器。终端使用者可以在telnet程序中输入命令,这些命令会在服务器上运行,就像直接在服务器的控制台上输入一样。可以在本地就能控制服务器。要开始一个telnet会话,必须输入用户名和密码来登录服务器。Telnet是常用的远程控制Web服务器的方法。 |
RFC文档目录(中文)
RFC Editor
W3C
HTTP/1.1 协议全解
相关文章推荐
- 计算机的OSI和TCP/IP网络模型
- 计算机网络 -- ISO/OSI七层模型 与 TCP/IP四层模型
- 计算机网络系统--TCP/IP OSI模型
- 计算机网络之OSI七层模型与TCP/IP四层模型
- 【计算机网络系列(三)】TCP/IP 层次模型和相关协议
- 计算机网络中的TCP/IP模型
- 计算机网络漫谈:OSI七层模型与TCP/IP四层(参考)模型
- 计算机网络漫谈:OSI七层模型与TCP/IP四层(参考)模型
- 计算机网络OSI参考模型与tcp/ip四层模型
- 黑马程序员——8.网络编程(网络模型、网络地址、传输协议(UDP、TCP/IP)、客户端和服务器端、URL)
- 计算机的OSI和TCP/IP网络模型
- 计算机网络中的TCP/IP模型
- OSI七层网络模型与TCP/IP四层网络模型
- OSI七层网络模型与TCP/IP四层网络模型
- OSI七层网络模型与TCP/IP四层网络模型
- OSI七层网络模型与TCP/IP四层网络模型
- OSI七层网络模型与TCP/IP四层网络模型
- OSI七层网络模型与TCP/IP四层网络模型
- OSI七层网络模型与TCP/IP四层网络模型
- OSI模型——TCP/IP网络7层协议的理解