网络编程

【.NET】网络编程总结

大兔子大兔子 提交于 2020-02-21 16:57:04
1、首先说下计算机网络中的TCP/IP参考模型   TCP/IP把网络分为5层,每一层负责完成不同的功能     1)应用层:传输报文,提供各种网络应用,有FTP、SMTP、HTTP等协议     2)运输层:传输报文段,为应用程序的客户机和服务器之间提供传输应用层报文服务,协议有TCP,UDP     3)网络层:传输数据包,协议有IP协议,选路协议     4)链路层:传输数据帧,以太网就属于这个层     5)物理层:在节点之间传输比特流   应用程序是通过套接字访问网络下层的服务的,套接字是网络运输层和应用层的一个编程接口,在程序中通过套接字来进行TCP和UDP传输,运输层以下的层对程序员透明 TCP和UDP是最基本的传输协议,应用层的所有协议都是基于这两个协议进行封装扩展的   TCP:可靠的,面向连接的连接数据传输服务,传输的是字节流,能保证数据的有序性     1)建立连接(三次握手)  2)传输数据  3)断开连接(四次握手)   UDP:不可靠,面向数据报的无连接的数据传输服务,传输的是是数据包,不保证数据的有序性     广播:可以向同一个子网内的所有主机发送广播数据     组播:可以向所有加入组网的主机发送组播数据 2、编程(本节由于篇幅太长,这里只说TCP)   .NET 框架提供了下面几个类对实现网络通信:     Socket

python-网络编程

久未见 提交于 2020-02-19 05:21:44
一、客户端服务器架构 服务器就是一系列硬件或软件,为一个或多个客户端(服务的用户)提供所需的“服务”。它存在唯一目的就是等待客户端的请求,并响应它们(提供服务),然后等待更多请求。 硬件服务器的一个例子就是文件服务器。这些通常都是拥有庞大通用存储容量的计算机,可以被客户端远程访问。客户端计算机会挂载服务器计算机上的磁盘,看起来好像这个磁盘就在本地计算机上一样。 软件服务器提供的主要服务包括程序执行、数据传输检索、聚合、更新,或其他类型的编程或数据操作。现在一个更常见的软件服务器就是 Web 服务器。如果个人或公司想要运行自己的 Web 服务器,那么必须拥有一台或多台计算机,在上面安装希望提供给用户的 Web 页面和 Web 应用程序,然后启动 Web 服务器。 数据库服务器是另一种类型的软件服务器。它们接受客户端的存储或检索请求,响应请求,然后等待更多的事务。 二、客户端/服务器网络编程 在服务器响应客户端请求之前,必须进行一些初步的设置流程来为之后的工作做准备。首先会创建一个通信端点,它能够使服务器监听请求。一旦一个通信端点已经建立,监听服务器就可以进入无限循环中,等待客户端的连接并响应它们的请求。 客户端比服务器端更简单,客户端所需要做的只是创建它的单一通信端点,然后建立一个到服务器的连接。然后,客户端就可以发出请求,该请求包括任何必要的数据交换。 三、套接字

linux网络编程IO模型

为君一笑 提交于 2020-02-18 22:25:37
同步与异步 : 同步就是一个任务的完成需要依赖另外一个任务时,只有等待被依赖的任务完成后,依赖的任务才能算完成。 异步是不需要等待被依赖的任务完成,只是通知被依赖的任务要完成什么工作,依赖的任务也立即执行,只要自己完成了整个任务就算完成了,异步一般使用状态、通知和回调。 阻塞与非阻塞 阻塞是指调用结果返回之前,当前线程会被挂起,一直处于等待消息通知,不能够执行其他业务。 非阻塞是指在不能立刻得到结果之前,该函数不会阻塞当前线程,而会立刻返回。 五种IO模型 对于一次IO访问,数据会先被拷贝到内核的缓冲区中,然后才会从内核的缓冲区拷贝到应用程序的地址空间。需要经历两个阶段: 1. 准备数据 2. 将数据从内核缓冲区拷贝到进程地址空间 由于存在这两个阶段,Linux产生了下面五种IO模型。 阻塞IO 当用户进程调用了recvfrom调用时,内核进入IO的第一个阶段:准备数据(内核需要等待足够的数据再拷贝),这个过程需要等待,用户进程会被阻塞,等内核将数据准备好,然后拷贝到用户地址空间,内核返回结果,用户进程才从阻塞态进入就绪态。 Linux中,默认情况下所有的socket都是阻塞的。 非阻塞IO 当用户进程发出read操作时,如果kernel中的数据还没有准备好,那么它并不会block用户进程,而是立刻返回一个error。用户进程判断结果是一个error时,它就知道数据还没有准备好

Linux网络编程-IO复用技术

爷,独闯天下 提交于 2020-02-18 22:25:16
IO复用是Linux中的IO模型之一,IO复用就是进程预先告诉内核需要监视的IO条件,使得内核一旦发现进程指定的一个或多个IO条件就绪,就通过进程进程处理,从而不会在单个IO上阻塞了。Linux中,提供了select、poll、epoll三种接口函数来实现IO复用。 1、select函数 #include <sys/select.h> #include <sys/time.h> int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout); // 返回:若有就绪描述符则为其个数,超时为0,出错-1 nfds参数指定了被监听文件描述符的个数,通常设置为监听的所有描述符最大值加1,因为文件描述符是从0开始的。readfs、writefds和exceptfds分别对应可读、可写和异常等事件文件描述符集合,当调用select时,通过这3个参数传入自己感兴趣的文件描述符,select函数返回后,内核通过修改他们来通知应用程序那些文件描述符已经就绪。 fd_set结构体包含一个整形数组,该数组中每一个元素的每一位标记一个文件描述符,fd_set容纳的文件描述符数量由FD_SETSIZE指定,这就限制了select能同时处理的文件描述符最大个数

网络编程进阶

二次信任 提交于 2020-02-18 03:54:00
一、操作系统介绍 1.1操作系统的功能 什么是操作系统——操作系统就是一个协调、管理和控制计算机硬件资源和软件资源的控制程序 封装了复杂的操作硬件的接口,提供给应用程序使用 管理CPU上运行的多个应用程序进程,使多个进程对硬件的竞争变得有序 1.2操作系统发展史 第一代计算机(1940~1955):真空管和穿孔卡片 程序员预约排队,每人固定时间独享计算机 第二代计算机(1955~1965):晶体管和批处理系统 程序员的程序批量进行输入、计算、输出,依旧是串行进程 1401机负责输入输出,7094机负责计算 第三代计算机(1965~1980):集成电路芯片和多道程序设计 多道技术: 多道技术中的多道指的是多个程序,多道技术的实现是为了解决多个程序竞争或者说共享同一个资源(比如cpu)的有序调度问题,解决方式即多路复用,多路复用分为时间上的复用和空间上的复用 通过在A程序进行I/O时的间隙去解决B程序的计算,最大化CPU效率, 核心在于切之前将进程的状态保存下来,这样才能保证下次切换回来时,能基于上次切走的位置继续运行 空间上的复用 将内存分为几部分,每个部分放入一个程序,这样,同一时间内存中就有了多道程序(需要物理层面的对内存进行分区) 时间上的复用(复用一个cpu的时间片) 当一个程序在等待I/O时(或者执行时间过长),CPU切换出去,另一个程序可以使用cpu

Python网络编程udp

拟墨画扇 提交于 2020-02-17 13:57:34
疫情当下,我在家敲代码!!!! 不出门,不约客,不为祖国增加负担,在家提升自己,就是对自己对国家的最大帮助。 网络通信概述 1.什么是网络 以打电话为例 说明: 网络就是一种辅助双方或者双方能够连接在一起的工具 如果没有网络, 单机 的世界是多么的孤单 没有网络的话,就没有今天的网络游戏,只有单机游戏,我们又怎么和远在他乡的小伙伴一起联机玩呢。 2.使用网络的目的 使用网络就是为了联通多方然后进行通信用的,即把数据从一方传递给另外一方 总结: 使用网络能够把多方链接在一起,然后可以进行数据的传递 所谓的网络编程就是让不同的电脑上的软件能够进行数据传递,即进程之间的通信 ip地址 1.什么是地址 地址就是用来标记地点的 2.ip地址的作用 怎么传过去? to :张三 content:来打农药? ip地址:用来在网络中标记一台电脑,比如192.168.1.1;在本地局域网上是唯一的。 3.ip地址的分类(了解内容) 每一个IP地址包括两部分:网络地址和主机地址 3.1 A类IP地址 一个A类IP地址有1字节的网络地址和3字节的主机地址组成,网络地址最高位必须是“0”,地址范围:1.0.0.1-126.255.255.254 二进制表示为:00000001 00000000 00000000 00000001 - 01111110 11111111 11111111 11111110

网络编程基础

允我心安 提交于 2020-02-16 20:55:26
1,什么是网络编程? 答:网络编程,作用于联网的基础环境下,不是单机版,编写的是应用程序. 2,为什么学习网络编程? 答:目的是利用网络,让两台远隔千里的数据活人进行信息交流. 3,什么是架构,架构有几种. 答;架构,就是模块的组成,目前有两种大的框架,一种是cs,服务端和客户端,另一种是浏览器和服务器,为bs的架构. 4,网络通讯的基础是啥? 答:基础就是我们联通的物理层,连接介之,常见的光纤,无线电,网线等都是介之. 5,通讯协议是啥,能干什么? 答:协议就是通讯之间的标准,就是我们的语言一样,我们要规范一种语言,说起来大家都明白,例如,一个0和1组成什么意思,可能差距较大,进行规范. 6,什么是网络通讯,有几部分构成? 答:OSI: Open System Interconnection Reference Model.开放式系统互联通信参考模型,后来简化为5种 1 首先物理层:根据电流的高低,判断出0和1 的作用. 2 数据链路层:收到0和1,他要做的是0和1进行处理,长度规定最短46个字节,最长1518个字节,,字节头部中包含,6个字节的目标MAC,6个字节的MAC元地址,802q标签2个字节,数据内容46到以及1500字节. 3 网络层:有了以太网协议,mac地址唯一性,广播就可以完成通信,但是当这个局域网足够大,每一次广播的资源,将不可想象,效率可想而知,

2.1.2 BIO阻塞式网络编程

孤者浪人 提交于 2020-02-16 12:20:30
BIO - 阻塞IO的含义 阻塞(blocking) IO: 资源不可用时,IO请求一直阻塞,直到反馈结果(有数据或超时)。 非阻塞(non-blocking) IO: 资源不可用时,IO请求离开返回,返回数据标识资源不可用。 同步(synchronous) IO: 应用阻塞在发送或接收数据的状态,直到数据成功传输或返回失败。 异步(asynchronous) IO: 应用发送或接收数据后立刻返回,实际处理是异步执行的。 阻塞和非阻塞是获取资源的方法 , 同步/异步是程序如何处理资源的逻辑设计 。 代码中使用的API: ServerSocket#accept 、 InputStream#read 都是阻塞的API。操作系统底层API中,默认Socket操作都是 Blocking 型, send/recv 等接口都是阻塞的。 带来的问题:阻塞导致在处理网络I/O时,一个线程只能处理一个网络连接。 一个简单的BIOclient public class BIOclient { public static void main ( String [ ] args ) throws IOException { Socket socket = new Socket ( "localhost" , 8080 ) ; OutputStream outputStream = socket .

1网络编程基础概念

≯℡__Kan透↙ 提交于 2020-02-14 23:37:04
1.OSI 七层模型 1.定义: 1.应用层:提供用户服务,具体内容由特定程序规定 2.表示层:提供数据的压缩解压和加密等 3.会话层:建立程序级的连接,决定使用什么样的传输服务 4.传输层:提供合适的通信服务,流量控制(本节内容主要研究这层) 5.网络层:路由选择,网络互联,分组传输 6.链路层:提供链路交换,具体消息发送 7.物理层:物理硬件,接口 2.优点:将功能分开,降低网路传输中的耦合度,每一部分完成自己的功能,开发更清晰 3.编程原则:高内聚低耦合 1.高内聚:让模块的功能尽可能单一 2.低耦合:模块之间尽量减少相互的关联和影响 4.简化四层模型: 1.应用层:应用层 表示层 会话层 2.传输层:传输层 3.网络层:网络层 4.物理链路层:链路层 物理层 5.简化五层模型:(TCP/IP模型) 1.应用层:应用层 表示层 会话层 2.传输层:传输层 3.网络层:网络层 4.链路层: 5.物理层:2.网络协议:网络通信中,各方必须遵守的规定,包括建立什么连接,如何识别,消息结构等 1.应用层:http smtp dns tftp 2.传输层:tcp udp 3.网络层:ip3.网络概念 1.主机:计算机的名称(本机:localhost) 2.ip 1.本机测试ip:127.0.0.1 2.代表局域网内任意可用ip:0.0.0.0 3.表示网段,代表本网段任意可用ip

Java-网络编程

你。 提交于 2020-02-13 17:40:14
文章目录 1. 网络编程基础知识 2. Java的基本网络支持 2.1 InetAddress 2.2URLDecoder、URLEncoder 2.3 URL、URLConnection和URLPermission 3. 基于TCP的网络编程 ServerSocket创建TCP服务器端 (主要参考《疯狂Java》) 1. 网络编程基础知识 网络基础知识 计算机网络使现代通信技术与计算机技术相结合的产物。通过计算机网络可以向全社会提供各种信息和服务。 计算机网络按照大小和延申范围可以划分为:局域网(LAN)、城域网(MAN)、广域网(WAN)。Internet可以看作世界上最大的广域网。 计算机网络中实现通信必须有一些约定,即通信协议。通信协议负责对传输速率、传输代码、代码结构、传输控制步骤、出错控制等指定处理标准。通信协议通常由三个部分组成:语义部分(决定双方对话的类型)、语法部分(决定双发对话的格式)、变换规则(决定双方的应答关系)。 ISO于1987年提出开放系统互连参考模型(OSI,Open System Interconnection),OSI力求网络简化,以模块化的方式设计网络。他把计算机网络分为物理层、数据链路层、网络层、传输层、会话层、表示层、应用层七层。OSI模式已成为各种计算机网络结构的参考标准。 通信协议中两种种很重要的协议:IP协议,(Internet