路由器

实现跨网段通信   路由器的工作原理是基于路由器中的路由表来实现数据包的路径选择

当路由器收到一个数据包的时候,会读取数据包的目标IP地址,根据目标IP地址来匹配路由表中的规则

单个路由器不会负责数据包全程的发送,只负责把数据包转发到下一个路由器即完成了任务

路由分类

1.主机路由              到达网络中某个单独主机的路径

2.网络路由              到达某个网段的路径

3.默认路由              目标网络为 0.0.0.0 发送到连接互联网的最近路由

路由表的构成

1.目标         2.netmask          3.interface         4.gateway

解释:

目      标:              数据包发送的目标路径

netmask:                子网掩码  确定网段的网络ID

interface:                本路由器上的出口,类似于指定使用电脑上的哪张网卡

gateway:

1.直连                       直连网络的网关是不需要配置的                     直连网络表示和本路由器接口直接相连的网段

2.非直连                   下一个路由器临近本路由器的接口地址

路由表配置

路由器中的直连网络是不需要手动配置,系统会自动生成      只有非直连的网络才需要添加路由记录.

路由表不单单是存在路由器中的,电脑中也存在路由表

当接口一样,网关也一样的时候 可以把这些设置成默认路由(配置成默认路由是有条件的,那就是路由器到所有非直连网段只有一个出口)

平时我们在电脑上配置默认网关就是为了生成一个默认路由记录,电脑主机的路由表中如果有默认路由而没有配置默认网关的话同样可以上网

但是如果只有默认网关而没有默认路由的话,电脑同样不能上网

路由操作命令

添加路由

route  add   -net/-host   8.8.8.8     netmask  255.255.255.0      gw 8.8.8.1

route  add    default    gw  8.8.8.1  netmask 255.255.0.0

删除路由

route    del     default   gw   8.8.8.1

route    del    -net/-host  8.8.8.8 netmask  255.255.255.0

配置路由表记录的时候所有的gw 必须和当前主机的任意一个网卡上的IP处于同一个网段,否则此条路由记录是无法添加成功的.

主机通讯过程步骤(主机A访问B)

1.主机A首先通过IP和netmask做运算判断主机B是否和A在同一个网段

2.如果在同一个网段则通过arp协议和B的IP获取B的MAC地址

3.如果不在同一个网段则通过arp协议和网关的IP获取网关的MAC地址

4.网关通过B的IP和自己的路由表转发数据包到下个路由器,直到转到和B在同一个网段的路由器

5.最后一个路由器通过arp协议和B的IP获取到B的MAC地址

3.数据包在路由器之间传递的时候只有源MAC地址和目标MAC地址在不停的发生变化.

4.没有路由的主机是无法和网络中的其它主机进行通信的.

5.两台主机要能通信有两个层面是需要相互连通的

1.物理层    两台主机都用网线连接到了互联网,这两台主机可以在同一个网段(在一个路由器的同一端),甚至可以连接在同一个交换机.

即使两台主机连接在同一个交换机上,如果对这两台主机人为的配置成不同网段的IP,那么这两者同样不能ping通.

2.网络层

1. 可以把两台主机的IP设置到同一个网段

2. 可以分别给两台主机的路由表中添加到对方主机网段的路由记录

6.两张网卡如果物理上相通,但是配置的IP地址不在同一个网段,要想这两台主机相通,配置一条无网关的路由记录即可

这种情况下跨这两个网段通信是不需要添加路由器的,只需要在主机中添加一条路由记录

route   add    default    dev    ens37

route   add    default    dev    eth1

7.用户给主机配置IP 网关  netmask 本质上都是为了配置路由,路由才是网络主机通信的关键。

Linux配置成路由器

cat  /proc/sys/net/ipv4/ip_forward   改成 1       启动linux的数据包转发(路由)功能.如果不启动,系统默认会把目标不是自己的数据包丢弃掉.

TCP路由网络通信的更多相关文章

  1. 程序猿修仙之路--数据结构之你是否真的懂数组? c#socket TCP同步网络通信 用lambda表达式树替代反射 ASP.NET MVC如何做一个简单的非法登录拦截

    程序猿修仙之路--数据结构之你是否真的懂数组?   数据结构 但凡IT江湖侠士,算法与数据结构为必修之课.早有前辈已经明确指出:程序=算法+数据结构  .要想在之后的江湖历练中通关,数据结构必不可少. ...

  2. Traefik 2.0 tcp 路由试用

    对于tcp 的路由是基于sni (需要tls)但是可以通过统配(*) 解决不试用tls的,当然也可以让Traefik 自动生成tls 证书 以下是测试http 以及mysql 的tcp 路由配置(de ...

  3. c#socket TCP同步网络通信

    一.socket简介 socket就是套接字,它是引用网络连接的特殊文件描述符,由三个基本要素组成: 1: AddressFamily(网络类型) 2: SocketType(数据传输类型) 3:Pr ...

  4. Java中的TCP/UDP网络通信编程

    127.0.0.1是回路地址,用于测试,相当于localhost本机地址,没有网卡,不设DNS都可以访问. 端口地址在0~65535之间,其中0~1023之间的端口是用于一些知名的网络服务和应用,用户 ...

  5. Java TCP/UDP网络通信编程

    本文转自:http://www.cnblogs.com/cdtarena/archive/2013/04/10/3012282.html 网络应用中基本上都是TCP(Transmission Cont ...

  6. boost::asio::ip::tcp实现网络通信的小例子

    同步方式: Boost.Asio是一个跨平台的网络及底层IO的C++编程库,它使用现代C++手法实现了统一的异步调用模型. 头文件 #include <boost/asio.hpp> 名空 ...

  7. python利用scapy模块写一个TCP路由追踪和扫描存活IP的脚本

    前言: 没有前言 0x01 from scapy.all import * import sys from socket import * import os from threading impor ...

  8. TCP/IP网络通信-数据传输

    1.通过网络IP实现数据的传输. 2.服务器端代码  [ 服务端主要通过Socket类来创建一个监听等待客户端连接,服务端发送用send方法,接收用Receive方法] using System.Ne ...

  9. QT从入门到入土(九)——TCP/IP网络通信(以及文件传输)

    引言 TCP/IP通信(即SOCKET通信)是通过网线将服务器Server端和客户机Client端进行连接,在遵循ISO/OSI模型的四层层级构架的基础上通过TCP/IP协议建立的通讯.控制器可以设置 ...

随机推荐

  1. [TensorBoard] *Cookbook - Tensorboard

    Ref: https://www.tensorflow.org/get_started/summaries_and_tensorboard 可视化对于Training的重要性,不言而喻. 代码示范 # ...

  2. ThinkPHP框架 做个简单表单 添加数据例子__ACTION__ __SELF__

    public function zhuCe(){//自定义zhuCe方法和zhuCe显示表里的__ACTiON__这个相互交接 //实现两个逻辑 //1,显示注册页面 //2.向数据库添加内容 //自 ...

  3. js事件绑定的几种方式

    在JavaScript中,有三种常用的绑定事件的方法: 在DOM元素中直接绑定: 在JavaScript代码中绑定: 绑定事件监听函数 一. 在DOM元素中直接绑定 这里的DOM元素,可以理解为HTM ...

  4. c语言笔记 数组2

    15. c99以前一直使用 gets 和 puts来输入输出字符串,但是gets因为无法获知内存大小,容易出现内存溢出(对此c99对gets,采取保留态势,c11直接废除,但是某些编译器仍然默认可以使 ...

  5. Codeforces 1132D - Stressful Training - [二分+贪心+优先队列]

    题目链接:https://codeforces.com/contest/1132/problem/D 题意: 有 $n$ 个学生,他们的电脑有初始电量 $a[1 \sim n]$,他们的电脑每分钟会耗 ...

  6. [No0000143]Win10“卓越性能模式”

    从不久之前Win10更新1803以来,微软不仅带来了一些新功能(和BUG),还悄悄地加入了一个“卓越性能模式”,老张想了想,不对呀,以前就有了一个“高性能模式”,这怎么就还多出个新的性能模式来,难道会 ...

  7. [No0000B9]C# 类型基础 值类型和引用类型 及其 对象复制 浅度复制vs深度复制 深入研究2

    接上[No0000B5]C# 类型基础 值类型和引用类型 及其 对象判等 深入研究1 对象复制 有的时候,创建一个对象可能会非常耗时,比如对象需要从远程数据库中获取数据来填充,又或者创建对象需要读取硬 ...

  8. angular 表单元素的使用总结

    工作中form表单元素最常用的是input,问题没有太多,现在总结下select ,radio组,checkbox的使用 1 select 常用的使用方式,如下 var Cityis = [{id:0 ...

  9. CORS跨域-Nginx使用方法(Access-Control-Allow-Origin错误提示)

    问题说明 当出现上图这个的时候,是访问请求外域URL无法访问,浏览器认为访问外域URL不安全,导致访问不了简称跨域问题.而这上面出现一句很重要的话“NO Access-Control-Allow-Or ...

  10. LU decomposition can be viewed as the matrix form of Gaussian elimination.

    https://en.wikipedia.org/wiki/LU_decomposition One way to find the LU decomposition of this simple m ...