1、了解概念

  C\S架构: 客户端(client)和服务端(server)之间的通信.

  B\S架构: 浏览器(browser)和服务端之间的通信.

    为什么只用一个浏览器就可以访问很多网站?  这是因为浏览器提供了一个统一的接口, 直接用该接口来访问多个网站.

2、网络通信的几个基本概念(按自己粗浅的理解写的,大神勿喷......)

  网线: 用来传输高低压电信号的, 可不是直接传数据的

  集线器: 将所有连接到集线器的网络设备连接起来

  交换机: 升级版的集线器  

  网卡: 用来接收电信号的

  MAC地址: 即物理地址, 网卡出厂时会拥有一块全球唯一标志的6位16进制的代号, 类似于 "8C-EC-4B-88-B9-C9" 的代号, 前三位代表厂商编号, 后三位代表生产流水号.

  IP地址: 4个点分十进制的数, 类似于255.255.255.255的数, 作用是划分网段.

  DHCP: 自动分配IP地址

  ARP表: 交换机中保存着IP地址和MAC地址的对应关系.

  ARP协议: 通过IP地址获取MAC地址.

  子网掩码: 子网掩码和源IP、目标IP通过and计算, 相同的话表示IP地址属于同一个网段.

  DNS服务器: 保存着域名和IP地址的对应关系.

  网关: 连接两种不同的网络, 将IP地址转换成公网的IP地址(NET技术).

  路由协议: 用来计算路由转发的最优路径.

  端口号: 标志电脑上的应用程序的唯一标志( 0-65535, 0-1024一般为内部程序在用 ).

  IP地址 + 端口号: 就可以确定服务器上的一个应用程序.

3、实现网络通信

  第一种方式: 基于MAC地址通信. 以广播的方式在全网进行广播.  缺点: 不仅造成网络阻塞, 而且信息不安全.

  第二种方式: 基于IP和MAC地址通信.  计算机以单播的方式向交换机传输数据, 交换机以广播的形式向该网段内的计算机传输数据, 此网段内的计算机识别IP来判断是否是传输给自己的, 是就接收, 不是的话就由交换机通过子网掩码计算是否是同一网段, 不是同一网段就直接扔给路由系统, 路由系统判断是否是自己内部的, 是的话以广播的形式扔给自己管辖内的所有交换机, 交换机接收到数据后判断IP是否是属于自己网段的, 是自己的话继续向自己管辖的计算机以广播方式传输数据; 不是路由器管辖的范围的话,就通过DNS服务器找到域名对应的IP地址, 路由器内的网关, 通过NET转换技术将源IP地址转换成公网的IP地址, 就拿到了某网站的IP地址, 再由路由协议计算路由转发的最优路径, 然后将请求扔给该网站的企业路由器, 路由器通过端口地址映射, 公网IP和端口能确定某服务器上的唯一应用程序, 然后应用接收请求, 最终客户端和服务端之间进行通信(利用上图进行理解).

python摸爬滚打之day026----网络通信流程的更多相关文章

  1. python写红包的原理流程包含random,lambda其中的使用和见简单介绍

    Python写红包的原理流程 首先来说说要用到的知识点,第一个要说的是扩展包random,random模块一般用来生成一个随机数 今天要用到ramdom中unifrom的方法用于生成一个指定范围的随机 ...

  2. Python基础-1 python由来 Python安装入门 注释 pyc文件 python变量 获取用户输入 流程控制if while

    1.Python由来 Python前世今生 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚 ...

  3. Python C/S架构,网络通信相关名词,socket编程

    主要内容: 一.  C/S架构 二. 网络通信的相关名词 三. socket编程 一. C/S架构和B\S架构概述 1. C/S架构: Client/Server(客户端/服务端)架构 描述: C/S ...

  4. 9.python的布尔类型与流程控制

    布尔类型其实可以算是一种特殊的数字,下面是 help() 函数得到的帮助信息: Help on class bool in module __builtin__: class bool(int) | ...

  5. python的布尔类型与流程控制

    布尔类型其实可以算是一种特殊的数字,下面是 help() 函数得到的帮助信息:  bool 首先,请注意这一行:

  6. python摸爬滚打之day26----网络编程之socket

    1.网络通信原理 互联网的本质就是一系列的网络协议, 统称为互联网协议. 互联网协议的功能:定义计算机如何接入internet,以及接入internet的计算机通信的标准. 互联网协议按照功能不同分为 ...

  7. python摸爬滚打之day15----初识类

    1.面向对象和面向过程 面向过程: 以事物的流程为核心.  优点: 负责的事物流程化, 编写简单; 缺点: 可拓展性差. 面向对象: 一切以对象为核心. 对象里封装着一切. 优点: 可拓展性强; 缺点 ...

  8. Python Select模型(程序流程)(转)

    缘由 之前写socket的CS模型代码,都是利用最原始的多线程方式.服务端是主线程,接到客户端的连接请求就从线程池中获取一个线程去处理整个socket连接的所有操作,虽然在连接数较短的情况下没有什么影 ...

  9. Python学习(三)流程控制

    Python流程控制 本章介绍 python 的基础流程控制.包括 if 条件语句.for 循环 和 while 循环语句: continue 及 break 的用法等. 基本用法与 C 和 Java ...

随机推荐

  1. VNC Viewer 设置屏幕分辨率

    1.第一种方法:使用geometry参数进行调整 vncserver -geometry 1280x1024即可,之后通过window下vnc连接后的ubuntu分辨率即为1280x1024了,注意这 ...

  2. atitit 读书与获取知识资料的attilax的总结.docx

    atitit 读书与获取知识资料的attilax的总结.docx 1.1. 读书即是获取知识,获取资料,获取信息的一种方式 2 2. 获取资料信息的目的,有什么作用,有什么用途?? 2 2.1. 扩大 ...

  3. make -j8以及linux下查看cpu的核数

    # 总核数 = 物理CPU个数 X 每颗物理CPU的核数 # 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数 # 查看物理CPU个数 cat /proc/cpuinfo| ...

  4. sqoop 测试 --hive-delims-replacement 参数

    在hive的官方文档中给的例子中字段分隔符是\001,但是在他的API文档中--hive-delims-replacement ,--hive-drop-import-delims   参数中会处理的 ...

  5. 在Java路上,我看过的一些书、源码和框架(转)

    原文地址:http://www.jianshu.com/p/4a41ee88bd82 物有本末,事有终始,知所先后,则近道矣 面试经历 关于Java面试,你应该准备这些知识点关于Java面试,你应该准 ...

  6. java把一个list分割成多个list存入map中(实例)

    这都是最近我写工具遇到的一些点, 这些点就是指我在网上没搜到答案,然后实际上我为此花费了时间的 public static void main(String[] args) { List<Str ...

  7. Easy UI combogrid动态加载数据

    场景: datagrid的每一行允许编辑,一行中有一个字段,编辑时,提供下拉框选项,供选择. 下拉框选项有多个列.如下图所示:(点击红框内的下拉按钮,会弹出绿框内的内容) 要求: 每行弹出的下拉框内容 ...

  8. shell模板-跨目录执行,彩色输出,临时文件,行遍历文件

    参数检查 #!/bin/bash set -e if [ ! -n "$1" ];then echo "Usage: #cmd <> []" exi ...

  9. nohup 部署springboot 使用命令

    启动jar包:nohup java -jar news-0.0.1-SNAPSHOT.jar 查看进程:netstat -nap|grep  [3389]3389  为需要查看的端口号 关闭进程:ki ...

  10. tcp的粘包和拆包示例以及使用LengthFieldFrameDecoder来解决的方法

    粘包和拆包是什么? TCP协议是一种字节流协议,没有记录边界,我们在接收消息的时候,不能人为接收到的数据包就是一个整包消息 当客户端向服务器端发送多个消息数据的时候,TCP协议可能将多个消息数据合并成 ...