OSI七层模型: 物理层, 数据链路层, 网络层,传输层,会话层,表达层,应用层

应用层:TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet 等等

传输层:TCP,UDP

网络层:IP,ICMP,OSPF,EIGRP,IGMP

数据链路层:SLIP,CSLIP,PPP,MTU

【图片来自网络】

网络通信要素

A:IP地址    (1) 用来标识网络上一台独立的主机

(2) IP地址 = 网络地址 + 主机地址(网络号:用于识别主机所在的网络/网段。主机号:用于识别该网络中的主机)

(3) 特殊的IP地址:127.0.0.1(本地回环地址、保留地址,点分十进制)可用于简单的测试网卡是否故障。表示本机。

B:端口号:  (1) 用于标识进程的逻辑地址。不同的进程都有不同的端口标识。

(2) 端口:要将数据发送到对方指定的应用程序上,为了标识这些应用程序,所以给这些网络应用程序都用数字进行标识。为了方便称呼这些数字,则将这些数字称为端口。(此端口是一个逻辑端口)

C: 传输协议通讯的规则。例如:TCP、UDP协议(好比两个人得用同一种语言进行交流)

①、UDP:User Datagram Protocol用户数据报协议

特点: 面向无连接:传输数据之前源端和目的端不需要建立连接; 每个数据报的大小都限制在64K(8个字节)以内;面向报文的不可靠协议。(即:发送出去的数据不一定会接收得到)传输速率快,效率高; 现实生活实例:邮局寄件、实时在线聊天、视频会议…等。

②、TCP:Transmission Control Protocol传输控制协议

特点: 面向连接:传输数据之前需要建立连接; 在连接过程中进行大量数据传输; 通过“三次握手”的方式完成连接,是安全可靠协议;传输速度慢,效率低。

TCP三次握手的Socket过程:

  • 服务器调用socket()、bind()、listen()完成初始化后,调用accept()阻塞等待;
  • 客户端Socket对象调用connect()向服务器发送了一个SYN并阻塞;
  • 服务器完成了第一次握手,即发送SYN和ACK应答;
  • 客户端收到服务端发送的应答之后,从connect()返回,再发送一个ACK给服务器;
  • 服务器Socket对象接收客户端第三次握手ACK确认,此时服务端从accept()返回,建立连接。

接下来就是两个端的连接对象互相收发数据。

TCP四次挥手的Socket过程:

  • 某个应用进程调用close()主动关闭,发送一个FIN;
  • 另一端接收到FIN后被动执行关闭,并发送ACK确认;
  • 之后被动执行关闭的应用进程调用close()关闭Socket,并也发送一个FIN;
  • 接收到这个FIN的一端向另一端ACK确认。

上面的代码是简单的演示Socket的基本函数使用,其实不管有多复杂的网络程序,这些基本函数都会用到。上面的服务端代码只有处理完一个客户端请求才会去处理下一个客户端的请求,这样的服务器处理能力很弱,而实际中服务器都需要有并发处理能力,为了达到并发处理,服务器就需要fork一个新的进程或者线程去处理请求。

Socket -服务端/客户端编程

Python学习---Socket编程

服务器端并发聊天[socketServer]

Python学习---socketServer编程

Socket通信原理以及三次握手和四次挥手详解

Python学习---Socket通信原理以及三次握手和四次挥手详解

远程执行命令

Python学习---远程执行命令

网络文件上传

Python学习---网络文件上传

【学习参考】 http://www.cnblogs.com/yuanchenqi/articles/5692716.html

Python学习---网络编程 1217【all】的更多相关文章

  1. python之网络编程

    本地的进程间通信(IPC)有很多种方式,但可以总结为下面4类: 消息传递(管道.FIFO.消息队列) 同步(互斥量.条件变量.读写锁.文件和写记录锁.信号量) 共享内存(匿名的和具名的) 远程过程调用 ...

  2. python中网络编程

    网络编程软件架构介绍: C/S:客户端,服务端 B/S:浏览器,服务端 # 常见应用: 1.手机端看着感觉是c/s架构其实更多的是b/s架构,例如微信小程序,支付宝第三方接口 2.pc端:b/s比较火 ...

  3. Python的网络编程--思维导图

    Python的网络编程--思维导图

  4. Python高级网络编程系列之第一篇

    在上一篇中我们简单的说了一下Python中网络编程的基础知识(相关API就不解释了),其中还有什么细节的知识点没有进行说明,如什么是TCP/IP协议有几种状态,什么是TCP三次握手,什么是TCP四次握 ...

  5. python基础网络编程--转

    python之网络编程 本地的进程间通信(IPC)有很多种方式,但可以总结为下面4类: 消息传递(管道.FIFO.消息队列) 同步(互斥量.条件变量.读写锁.文件和写记录锁.信号量) 共享内存(匿名的 ...

  6. python 基础网络编程2

    python 基础网络编程2 前一篇讲了socketserver.py中BaseServer类, 下面介绍下TCPServer和UDPServer class TCPServer(BaseServer ...

  7. python 基础网络编程1

    python 基础网络编程1 Source code: Lib/socketserver.py lib的主目录下有一个sockserver.py文件, 里面是python基本的网络编程模型 共有一个b ...

  8. Python学习网络爬虫--转

    原文地址:https://github.com/lining0806/PythonSpiderNotes Python学习网络爬虫主要分3个大的版块:抓取,分析,存储 另外,比较常用的爬虫框架Scra ...

  9. Java学习——网络编程

    Java学习——网络编程 摘要:本文主要介绍了什么是网络编程,以及如何使用Java语言进行网络编程. 部分内容来自以下博客: https://www.cnblogs.com/renyuan/p/269 ...

随机推荐

  1. Redis之hiredis API (String)

    String // // Created by zhangrongxiang on 2018/3/7 13:48 // File string2 // #include <hiredis/hir ...

  2. Unix/Linux文件类型及访问权限

    在Linux系统中,有7种文件类型. 普通文件 (regular file) 目录文件 (directory) 链接文件 (symbolic link) 管道文件 (FIFO) 套接字文件 (sock ...

  3. module使用和设置

    Modules environmentDescription This is a system that allows you to easily change between different v ...

  4. ASP.NET MVC Core Starter Kit

    上一篇博文<创建.NET Core程序的Nuget Package>提到准备创建一个Nuget包,用于自动生成一个简单的ASP.NET MVC Core的示例项目.本来是打算用Nuget实 ...

  5. vue 获取数据联动下拉框select ,并解决报Duplicate value found in v-for="...": "". Use track-by="$index" 错误

    公司项目中遇到一个问题,联动下拉框,并且数据是使用vue-resource从后台获取的,格式不利于输出联动下拉框,联动下拉框是第一个下拉框输出一个数组里每一项json的一个text值,从而第二下拉框输 ...

  6. [转]SAP模块一句话入门

    本文转自:http://www.cnblogs.com/mybi/archive/2010/12/20/1911154.html SAP一句话入门:Financial & Controllin ...

  7. 五、curator recipes之选举主节点Leader Latch

    简介 在分布式计算中,主节点选举是为了把某个进程作为主节点来控制其它节点的过程.在选举结束之前,我们不知道哪个节点会成为主节点.curator对于主节点选举有两种实现方式,本文示例演示Latch的实现 ...

  8. oracle锁表问题解决

    select object_name,machine,s.sid,s.serial# from v$locked_object l,dba_objects o ,v$session s where l ...

  9. The configuration section 'system.serviceModel' cannot be read because it is missing a section decla

    将Asp.Net 2.0的Web Site搭建在IIS7(7.5)上时,运行出现500.19错误, 错误提示为 The configuration section 'system.serviceMod ...

  10. BZOJ4589: Hard Nim(FWT 快速幂)

    题意 题目链接 Sol 神仙题Orzzzz 题目可以转化为从\(\leqslant M\)的质数中选出\(N\)个\(xor\)和为\(0\)的方案数 这样就好做多了 设\(f(x) = [x \te ...