您的位置:首页 > 理论基础 > 计算机网络

TCP/IP模型解读+联系生活中应用+网络编程实现

2016-09-09 22:40 405 查看
IOS模型                    TCP/IP模型

应用层 ------http ftp telnet cmtp     rip dns dhcp

表示层                           应用层

会话层

传输层                           传输层 ------tcp   udp 

网络层                            网络层       ip   imcp  arp rarp

数据链路层                    网络接口      wi-fi(IEEE 802.11)  令牌环  以太网  GPRS 帧中继 PPP HDLC

物理层                  -----双绞线(568A标准:白绿,绿,白橙,蓝,白蓝,橙,白棕,棕
  568B标准:白橙,橙,白绿,蓝,白蓝,绿,白棕,棕)  调制解调器 光导纤维 同轴电缆

注意:双绞线有两种,一种是平行的直通线  用于电脑与交换机或者路由器 两端线头一样,交叉线用于平等地位的设备之间相连的,比如电脑连电脑 两端线头不一样,一头用568A标准(白绿,绿、白橙,蓝,白蓝,橙,白棕,棕)、另一头用568B标准(白橙,橙,白绿,蓝,白,绿,白棕,棕),但用到的只有1236线  1-3  2-6。

用于存储时100M与100MB区别不大,只是叫法不一样。但在网络中表示传输速度就不一样了,网络中用bps表示每秒传输多少个位数据。但网络下载工具用Bps表示下载速度,所以先用B换位b即  1B=8位,比如100M带宽,下载1GB数据。需要的时间是1GB=1024*8Mbps  ,1024*8/100大概等于81秒。

以太帧的长度至少为64B(字节),以太帧数据段长度在46字节---1500字节之间,是为了避免收不到冲突并重传以及避免某一主机一直占有信道又防止接收数据的主机发生缓冲区溢出。所以10Mbps网络速度传64字节需要52.1微秒时间   64*8/10*10的6次幂bps 秒转为微秒是1s=1000ms=1000 000微秒  所以为51.2μs.

为什么10Mbps最大的传输距离是2500米?

当数据段大小大于1500字节时,需要采用IP分片技,即在IP首部的片偏移字段设置,以便知道IP分片在数据报中的什么位置,方便目标主机重组数据报。除了最后一个分片数据段大小可以不是8字节的倍数外,其他分片必须是。因为片偏移是以8个字节为偏移单位的。

常用的协议 

PPP:端对端 不可靠 IP层是可靠的

arp:  地址解析协议 ,当主机A向同一个子网中目标主机B发送IP数据包时,首先先使用arp从本地arp缓存中MAC---IP查找目标IP对应的MAC,如果没找到,就在子网中发送arp广播,arp报文包含主机A的IP以及它的MAC和目标IP,其他主机收到arp报文后把目标IP与自己IP对比,不匹配就丢弃,匹配就把主机A的IP和MAC缓存到本地ARP中,并发送包含自己MAC的ARP响应给主机A。因为其他主机响应是自动的,所以有可能发生ARP欺骗。当不在同一子网时,会使用路由器的代理arp。路由器中存有经过它的所有主机MAC以及对应的IP。

IP

A类

1.0.0.0 到126.0.0.0 

0.0.0.0 和127.0.0.0保留 

默认子网掩码:255.0.0.0



128.1.0.0到191.254.0.0

128.0.0.0和191.255.0.0保留 

默认子网掩码:255.255.0.0



192.0.1.0 到223.255.254.0

192.0.0.0和223.255.255.0保留 

默认子网掩码:255.255.255.0    



224.0.0.0到239.255.255.255用于多点广播 



240.0.0.0到255.255.255.254保留 

255.255.255.255用于广播

组网:子网掩码与IP地址由网络位+主机位组成,其中主机位由网络标识(左边二进制为1)+主机标识 (二进制为0)

设置网络标识原则:将要划分的子网数目转换为2的m次方,如果恰好不是2的多少次方,则取大位原则,其中m为主机位中有m个网络标识符。

知道一个IP地址,根据想要划分子网数来设置子网掩码

比如,有一个C类IP地址192.167.1.232,我想要分为两个子网,如何设置子网掩码。(从子网数出发)

  1 两个子网,说明只需要在主机位设置1个网络标识为1。如果是三个子网,则需要2个网络标识位,因为2的2次方等于4,所以用取大原则。

   2 默认C类子网掩码为255.255.255.0,   11111111.11111111.11111111.00000000 在主机位中设置一个网络标识则为10000000,最后子网掩码为255.255.255.128。

    子网1IP地址范围:192.167.1.1--192.167.1.65(因为主机数为128台,每个子网中分64台机子)

    子网2:192.167.1.66--192.167.1.130

    子网中的主机IP是如何计算的?

  比如,有一个C类IP地址192.167.1.232,如何为100台机子分配子网掩码(从主机数出发)

   1  100转为二进制为1100100  为7位

    2  默认c类子网掩码为255.255.255.0  把它全变为1位,即255.255.255.255,最后主机位中右边开始变为0(主机标识),所以最后一个字节11111111变为10000000 所以最后子网掩码为255.255.255.128

 常用的管理IP

动态分配(路由器或者服务器DHCP、代理服务器、 配置NAT池)

静态分配

ICMP internet控制报文协议

         用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用,可用与查询与差错,针对目的主机的某种信息查询并希望的到回应,当产生差错时,记录下错误信息并返回给源主机。

   ping

   在ICMP报文中插入时间,当返回时,用当前时间减去报文中的时间,ping -r 则在报文中加入处理该数据报的路由器IP,但IP首部地址有限,(60B-20B-3B)/4B大概等于9,60是最大首部长度,20是固定首部长度,3是R可选项  4是IP地址。

   注意:这一操作不经过传输层。

  tracert  回显经过的路由器,IP首部的TTL设为1,会回显为请求超时,每经过一个路由器TTL都减一,等于1或者0就超时。

  UDP

           用户数据报协议,是一个面向无连接的协议,并且无重传机制,会发生丢包、收到重复包、乱序等情况。而对于数据精确性要求不高的状态数据以及视频数据,丢包的影响不大。因为会不断收到新的包,丢失的个别包会有新的包来覆盖,所以只需在远程控制系统的通信部分自行处理乱序及重复包的问题,而对于丢包的问题一般不作处理。    但对于命令包这种需要精确收发的数据, 可在程序的开发中加入丢包重发和超时丢弃的处理。非面向连接的传输协议在数据传输之前不建立连接,而是在每个中间节点对非面向连接的包和数据包进行路由。没有点到点的连接,非面向连接的协议,如UDP,是不可靠的连接。当一个UDP数据包在网络中移动时,发送过程并不知道它是否到达了目的地,除非应用层已经确认了它已到达的事实。非面向连接的协议也不能探测重复的和乱序的包

“信道复用技术”实现了,在同一条线路上,单位时间内可供X台计算机同时通信,不同的信道复用技术,使用不同的复用技术,目的就是创建“虚拟信道”。

  TCP

传输控制协议,是一种提供可靠数据传输的通用协议。TCP协议提供了可靠的数据传输,但是其拥塞控制、数据校验、重传机制的网络开销很大,不适合实时通信,所以选择开销很小的UDP协议来传输数据。 

  三次握手

   客户端-----------------------------------------》SYS=1请求   服务器

               <---------------------------------SYS=2,ACK=1确认序列号

               ACK=2----------------------------------->

  四次挥手

              FIN包-----------------------------------》

                  《-----------------------------------------ACK

      或者服务器先发关闭请求

               《----------------------------------------FIN包

                ACK-------------------------------------------->

注意:TCP数据报不采用IP分片,够用。

DNS 

   域名解析协议,先向DNS提供的IP地址访问,根据域名得到IP,有了IP就可以访问了,

网关

    访问外部网络先通过该网关,一个网络到另一个网络(路由器)

集线器:共用一个网络带宽(估计内部是各个网桥端口连接一条线),它不能识别目标地址,所以收到端口发来的数据时,都是广播出去的,因为它是采用半双功工作方式,也就是一条线上不能同时收发数据。容易产生冲突和重发。

路由器

当路由器接受到网络接口层数据时,调用相应的链路功能模块解析该数据包链路层协议报头,得到目标IP,再根据路由通信协议查找路由表,如果到某一特定节点有一条以上路径时,采用基本预先确定的路由准则是采用最优路径,找到下一跳的IP地址,就在数据帧中添加下一个MAC地址。同时IP头中的TTL字段也要减一,并重新计算校验和,当数据包送到输出端口时,按顺序等待,以便发送出去。

  路由表结构

路由表是有目的网段destination、子网掩码(mask)、本地路由器出口IP (interface),下一跳路由器入口IP(gateway)、跳数(metric)路由线路记录质量

目的网段:网络地址

interface:下一个路由器IP

gateway:将要去的路由器IP

metric:该条路由记录的质量,一般情况下,如果有多条到达相同目的地的路由记录,路由器会采用metric值小的那条路由 

注意:interface与gateway通常在一个网段

其中它们数据有以下几种 显示:

缺省路由:

本地环路:

直联网段路由:

本地主机路由:

本地广播路由:

组播路由:

广播路由:

配置

交换机:

       是集线器的高配版与路由器的低配版的结合,传统的交换机(二层交换机)可以共用一个带宽可以不共用(交换矩阵,为任意两个端口提供通路),就相当于把网桥接口中的分组,每个组共用一条内部线,在里面网络带宽共用,但不同组之间带宽不一样(不共用),如果每个组只有一个端口,那就可以并行通信,再加上现在的交换机采用全双工的工作方式,同时接受与发送数据,带宽提高一倍。二层交换是在数据链路层进行的,所以它的端口可以连接一个LAN局域网或者一个高性能的服务器。其中它的所有端口都是由专用处理器控制,并经过控制管理总线转发学习。现在的交换机已经发展到三层交换机,也就是引用路由技术,让交换机可以完成网络层路由选择。 

      工作原理:开始的时候,交换机中的MAC表是空的,也就是它没有与它连接的主机的IP与MAC记录。它是通过学习不断补充与更新的,当主机A发送数据到主机B时,数据包中有主机A的IP与对应的MAC地址,和目标主机B的IP,但没有目标主机B的MAC地址,交换机收到主机A通过端口1发来的数据报时,先在MAC表中记录源主机A的MAC地址和对应的端口(网卡NCI)。再调用相关模块(编程里的方法)解析它IP首部,得到目标IP,再根据IP查询MAC表,查询对应的端口,没有就数据报广播到所有活动端口中,活动端口收到后先用自己的IP与源主机IP匹配,不匹配就丢弃,匹配就把源主机A的IP地址和MAC地址记录到本机的ARP缓存表中,并封装自己的MAC地址发送回交换机,交换机再转发给源主机A。

  种类:

  ATM交换机:为工作组,同一个工作组共用带宽。

  LAN局域网交换机:连接多个LAN,网络设备之间通信是无冲突的。

  WAN交换机

  可采用网管软件进行管理,为了提高数据交换的速度与速率,可采用不同的支持方式。

  存储转发:先把数据存储起来,再检验数据是否合法,优点是减少数据错误转发率,缺点是提高延时时间(接受一个完整数据帧的时间和检验时间之和)

 切入法:只检验数据帧的目标地址,优点减少延时,缺点增加数据错误转发率。

注意:交换机也可以预防

  配置:思科

  后面用再补上。。。

  socket接口实现编程

    后面再补上。

。。。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  TCPIP 网络编程
相关文章推荐