一. 操作系统基础
操作系统(Operatin System,简称OS)是管理和控制计算机硬件与软件资源的计算机程序,是直接运行在"裸机"上的最基本的系统软件,任何其他软件都必须在操作系统的支持下才能运行.
计算机组成: 硬件-->操作系统(OS)-->应用软件

二. 网络通信原理(参考文档)

2.1 互联网的本质就是一系列网络协议
(1)概述
当我们使用电脑,在浏览器上输出网址,对目标网站进行访问时,电脑将输入的网址变成了电信号发送出去,从而让目标网站的服务器接收到我们的请求,最后再应答我们的请求.事实上,在这个通信过程中,双方发送的信息都是具有固定格式的,这种让所有电脑都能识别的信息格式,就像英语成为世界所有人通信标准一样,如果把计算机看成是分布于世界各地的人,那么连接连接两台计算机之间的Internet实际上就是一系列统一的标准,这些标准被称之为互联网协议.因此,互联网的本质就是一系列的协议,总称为"互联网协议(Internet Protocol Suite)".

(2)互联网协议的功能: 定义计算机如何接入Internet, 以及接入Internet的计算机通信的标准.

(3)网络通信流程(以访问"京东"为例)

流程描述:

第一步:
用户打开浏览器,在地址栏输入网址(域名):www.jd.com,请求访问该网站

第二步: 电脑将请求信息发送给交换机,交换机把信息发送给路由器,路由器把信息发送给DNS服务器,DNS服务器通过DNS协议把域名转换成IP地址,然后把IP地址返还给路由器

第三步: 在查到了京东服务器的IP地址以后,路由器通过路由协议计算出一个路由转发的最优路径,将请求信息还送给这个IP地址对应的京东路由器

第四步:
京东路由器把请求信息发送给京东网站的服务器上

第五步:
京东网站服务器按照来的时候的路径,再返回给用户自己的应答信息

2.2 osi七层协议(参考文档)
互联网协议按照功能不同分为osi七层, tcp/ip五层, 或tcp/ip四层.

(1)osi七层: 应用层 <--> 表示层 <--> 会话层 <--> 传输层 <--> 网络层 <--> 数据链路层 <--> 物理层

(2)tcp/ip五层: 应用层 <--> 传输层 <--> 网络层 <--> 数据链路层 <--> 物理层

(3)tcp/ip四层: 应用层 <--> 传输层 <--> 网络层 <--> 物理层

2.3 tcp/ip五层模型讲解
应用层 <--> 传输层 <--> 网络层 <--> 数据链路层 <--> 物理层
用户感知到的只是最上面一层应用层,自上而下每层都依赖于下一层,所以我们从最下一层开始切入,比较好理解每层都运行特定的协议,越往上越靠近用户,越往下越靠近硬件.

2.3.1物理层
物理层功能: 主要是基于电器特性发送高低电压(电信号),高电压对应数字1,低电压对应数字0.

2.3.2数据链路层
数据链路层功能: 定义了电信号的分组方式.

以太网协议: 早期的时候各个公司都有自己的分组方式,后来形成了统一的标准,即以太网协议(Ethernet).

mac地址: 每块网卡出厂时都被烧制上一个世界唯一的mac地址,它相当于电脑的上网身份证.

广播: 有了mac地址,同一网络内的两台主机就可以通信了(一台主机通过arp协议获取另一台主机的mac地址).Ethernet(以太网)采用最原始的方式,以广播的方式进行通信,即计算机通信基本靠"吼".

2.3.3网络层
网络层由来:有了ethernet,mac地址,广播的发送方式,世界上的计算机就可以彼此通信了,问题是世界范围的互联网是由一个个彼此隔离的小的局域网组成的,如果所有的通信都采用以太网的广播方式,那么一台机器发送的报全世界都会收到,如此一来不仅仅会造成效率低下,更严重的是会造成网络拥堵.因此必须找出一种方法来区分哪些计算机属于同一广播域,哪些不是.如果是就采用广播的方式发送,如果不是就采用路由的方式(向不同广播域/子网分发数据包),然而mac地址是无法区分的,它只跟厂商有关.

网络层功能: 引入一套新的地址用来区分不同的广播域/子网,这套地址即网络地址.

IP协议: 规定网络地址的协议叫ip协议,它定义的地址称之为ip地址,广泛采用的v4版本即ipv4.一个IP地址通常写成四段点分十进制数.

子网掩码: 子网掩码是表示子网络特征的一个参数,通过子网掩码可以判断任意两个IP地址是否处在同一个子网络.

IP协议的作用: 为每一台计算机分配IP地址,确定哪些地址在同一个子网络.

2.3.4传输层
传输层功能:建立端口到端口的通信(端对端通信)
补充:端口范围0-65535,0-1023为系统占用端口

tcp协议:

(1)TCP把连接作为最基本的对象,每一条TCP连接都有两个端点,这种端点我们叫作套接字(socket),它的定义为端口号拼接到IP地址即构成了套接字,例如,若IP地址为192.3.4.16 而端口号为80,那么得到的套接字为192.3.4.16:80。

(2)当应用程序希望通过 TCP 与另一个应用程序通信时,它会发送一个通信请求。这个请求必须被送到一个确切的地址。在双方“握手”之后,TCP 将在两个应用程序之间建立一个全双工 (full-duplex,双方都可以收发消息) 的通信。这个全双工的通信将占用两个计算机之间的通信线路,直到它被一方或双方关闭为止。

(3)TCP是可靠传输,TCP数据包没有长度限制,理论上可以无限长,但是为了保证网络的效率,通常TCP数据包的长度不会超过IP数据包的长度,以确保单个TCP数据包不必再分割。

(4)TCP与UDP区别
tcp协议:面向连接,消息可靠,相对udp来讲,传输速度慢,消息是面向流的,无消息保护边界(0).
udp协议:面向无连接,消息不可靠,传输速度快,消息是面向包的,有消息保护边界.

(5)tcp三次握手和四次挥手(更多底层的描述请点这里)
三次握手:
第一次: Client询问Server
第二次: Server应答Client, Server询问Client
第三次: Client应答Server
四次挥手:
第一次: Client发送断开请求,进入终止等待1状态.
第二次: Server收到断开请求并发送确认请求,进入关闭等待状态.Client收到确认请求,进入终止等待2状态.
第三次: Server发送断开请求,进入最后确认状态.
第四次: Client收到断开请求并发送确认请求,进入时间等待状态.Server收到确认请求,进入关闭状态,结束本次TCP连接.

2.3.5应用层
应用层功能:规定应用程序的数据格式
TCP/IP协议传输示例:
应用程序:                             用户数据
应用层:                                应用数据(包括用户数据)
传输层:                                应用数据(包括用户数据) + TCP/UDP协议(拿端口)
网络层:                                应用数据(包括用户数据) + TCP/UDP协议(拿端口) + IP协议(拿IP地址)
链路层:     以太网首部(帧头) + 应用数据(包括用户数据) + TCP/UDP协议(拿端口) + IP协议(拿IP地址) + MAC地址 + 以太网尾部(帧尾)

Python 网络通信协议(互联网协议)的更多相关文章

  1. Cocos2d-X网络编程(2) Cocos2d中的网络通信协议——http协议

    HTTP协议也叫超文本传输协议.是互联网广泛使用的通信协议,常用于B/S架构中. HTTP连接使用的是短连接形式,也就是"请求-响应"的方式,不仅在请求时需要先建立连接,而且需要客 ...

  2. Python 网络通信协议 tcp udp区别

    网络通信的整个流程 在这一节就给大家讲解,有些同学对网络是既熟悉又陌生,熟悉是因为我们都知道,我们安装一个路由器,拉一个网线,或者用无限路由器,连上网线或者连上wifi就能够上网购物.看片片.吃鸡了, ...

  3. python 网络编程 -- Tcp协议

    Socket是网络编程的一个抽象概念.通常我们用一个Socket表示“打开了一个网络链接”,而打开一个Socket需要知道目标计算机的IP地址和端口号,再指定协议类型即可. 客户端 大多数连接都是可靠 ...

  4. python网络编程-TCP协议中的三次握手和四次挥手(图解)

    建立TCP需要三次握手才能建立,而断开连接则需要四次握手.整个过程如下图所示: 先来看看如何建立连接的. 首先Client端发送连接请求报文,Server段接受连接后回复ACK报文,并为这次连接分配资 ...

  5. Cocos2d-X网络编程(3) Cocos2d中的网络通信协议——WebSocket协议

    WebSocket protocol 是HTML5一种新的协议.它实现了浏览器与服务器全双工通信.实现浏览器与服务器的即时通讯.即服务器也能主动向客户端发消息. WebSocket代理类和方法: co ...

  6. Python网络编程socket

    网络编程之socket 看到本篇文章的题目是不是很疑惑,what is this?,不要着急,但是记住一说网络编程,你就想socket,socket是实现网络编程的工具,那么什么是socket,什么是 ...

  7. python网络编程01 /C/S架构|B/S架构、网络通信原理、五层协议、七层协议简述、端口映射技术

    python网络编程01 /C/S架构|B/S架构.网络通信原理.五层协议.七层协议简述.端口映射技术 目录 python网络编程01 /C/S架构|B/S架构.网络通信原理.五层协议.七层协议简述. ...

  8. python 全栈开发,Day33(tcp协议和udp协议,互联网协议与osi模型,socket概念,套接字(socket)初使用)

    先来回顾一下昨天的内容 网络编程开发架构 B/S C/S架构网卡 mac地址网段 ip地址 : 表示了一台电脑在网络中的位置 子网掩码 : ip和子网掩码按位与得到网段 网关ip : 内置在路由器中的 ...

  9. Python 网络编程之网络协议(未完待续)

    一:网络编程从两大架构开始 1.网络开发的两大架构 c/s 架构 : client  server B/S 架构 : Brower  server (1)bs 和 cs 架构之间的关系? (2)哪一种 ...

随机推荐

  1. 少有人知的 GitHub 使用技巧

    GitHub 大家常上吧?可是使用 GitHub 的各种小窍门你就不一定知道了.本文将各种使用 GitHub 的小窍门分享给大家. diff时忽略空格 有些修改只是增减了空格,在URL中添加?w=1就 ...

  2. loj515 「LibreOJ β Round #2」贪心只能过样例[bitset+bool背包]

    由于bitset极其不熟练且在实际题目中想不起来运用它来优化,于是练了几道题. 这题是一个分组的bool背包,每组必须选一个,暴力的话是$O(n^5)$. 如果dp数组不要一维滚动的话,有两种枚举方法 ...

  3. POI做题笔记

    POI2011 Conspiracy (2-SAT) Description \(n\leq 5000\) Solution 发现可拆点然后使用2-SAT做,由于特殊的关系,可以证明每次只能交换两个集 ...

  4. Codeforces Round #586 (Div. 1 + Div. 2) E. Tourism

    链接: https://codeforces.com/contest/1220/problem/E 题意: Alex decided to go on a touristic trip over th ...

  5. 11 git第二部分(未完成)

    https://www.cnblogs.com/shangchunhong/p/9444335.html

  6. HDU 6085 - Rikka with Candies | 2017 Multi-University Training Contest 5

    看了标程的压位,才知道压位也能很容易写- - /* HDU 6085 - Rikka with Candies [ 压位 ] | 2017 Multi-University Training Cont ...

  7. HDU 6046 - hash | 2017 Multi-University Training Contest 2

    思路来自题解和一些博客 最麻烦的是样例没啥用- - /* HDU 6046 - hash [ hash,鸽巢 ] | 2017 Multi-University Training Contest 2 ...

  8. c++ const修饰词

    常变量:  const 类型说明符 变量名    // const int i = 20;常变量定义必需初始化赋值且变量值不可更改 常引用:  const 类型说明符 &引用名  //引用:指 ...

  9. [CSP-S模拟测试]:A(单调栈维护凸包+二分答案)

    题目传送门(内部题150) 输入格式 第一行两个整数$N,Q$. 接下来的$N$行,每行两个整数$a_i,b_i$. 接下来的$Q$行,每行一个整数$x$. 输出格式 对于每个询问,输出一行一个整数表 ...

  10. jsp页面,使用Struts2标签,传递和获取Action类里的参数,注意事项。<s:a action><s:iterator><s:param>ognl表达式

    在编写SSH2项目的时候,除了使用<s:form>表单标签向Action类跳转并传递参数之外,很更多时候还需要用到<s:a action="XXX.action" ...