网络编程

初识网络编程

[亡魂溺海] 提交于 2020-02-25 10:45:14
网络编程 ---------------------------不定时的更新开始了,且更且珍惜------------------------------ 我要每次都写一遍:前面的还没补完,以此催促不定时更新的我 网络编程 软件开发架构:有两种,c/s架构、b/s架构    c/s架构:        c:客户端        s:服务端    b/s架构:        b:浏览器        s:服务器   什么是服务端?什么是客户端?        从名字我们也能大致了解到它们的作用,服务端提供服务,客户端体验服务。        服务端:24小时不间断通过服务,谁来就服务谁        客户端:想体验服务的时候就去找服务端体验服务       手机端:看起来c/s架构好像比较火,其实不然,微信小程序、支付宝第三方接口:统一接口 都是b/s架构   PC端:b/s比较火   本质上:b/s其实也是c/s 学习网络编程 >>> 开发c/s架构的软件 并发编程,前端,数据库,框架 >>> 开发b/s架构的软件 目的:需要实现远程数据传输(起源于美国军事) 那么想要实现远程通信,第一个需要具备的条件就是:物理连接介质。 而计算机与计算机之间实现远程通信,光有物体连接介质是不够的,还需要一个共同的标准即协议 ’‘’ 我微笑码字,关于python的浪漫,原来真心更新博客并不这么简单

linux 网络编程:客户端与服务器通过TCP协议相互通信 + UDP

感情迁移 提交于 2020-02-24 14:26:28
1、TCP编程的客户端一般步骤: 1、创建一个socket,用函数socket(); 2、设置socket属性,用函数setsockopt();* 可选; 3、绑定IP地址、端口等信息到socket上,用函数bind();* 可选; 4、设置要连接的对方的IP地址和端口等属性; 5、连接服务器,用函数connect(); 6、收发数据,用函数send()和recv(),或者read()和write(); 7、关闭网络连接; 2、TCP编程的服务器端一般步骤: 1、创建一个socket,用函数socket(); 2、设置socket属性,用函数setsockopt(); * 可选; 3、绑定IP地址、端口等信息到socket上,用函数bind(); 4、开启监听,用函数listen(); 5、接收客户端上来的连接,用函数accept(); 6、收发数据,用函数send()和recv(),或者read()和write(); 7、关闭网络连接; 8、关闭监听; 3、客户端源代码(tcpclient.c): #include <stdio.h> #include <string.h> #include <errno.h> #include <sys/socket.h> #include <stdlib.h> #include <netinet/in.h> #include <arpa

网络编程模型及TCP、UDP编程设计

南笙酒味 提交于 2020-02-23 14:42:12
1.Linux网络模型 Linux网络编程--->>>socket套接字的编程 2.TCP网络模型 UDP网络模型 在创建套接字后,服务器与客户端 都得 初始化网络地址 3.网络编程 服务器端: //1.1创建socket if((sockfd = socket(AF_INET, SOCK_STREAM, 0))<0) //IPv4,用于TCP通信 {perror("socket error!");exit(-1);} //确保连接稳定性 //1.2绑定地址 /*初始化地址*/ bzero(&server_addr,sizeof(struct sockaddr_in));//清零 server_addr.sin_family = AF_INET;//协议族 server_addr.sin_addr.s_addr = htonl(INADDR_ANY); //跟随网络传输 sin_addr中的成员s_addr 任意ip地址 字节序转换 主机转换为网络字节序 server_addr.sin_port = htons(port);//端口,跟随网络传输 /*绑定地址*/ if(bind(sockfd,(struct sockaddr *)(&server_addr),sizeof(struct sockaddr))<0); //要绑定的地址 地址长度 {perror("bind

网络编程基础,传输层服务

房东的猫 提交于 2020-02-22 05:21:16
网络编程基础 计算机网络功能主要包括实现资源共享,实现数据信息的快速传递。 OSI七层模型 >制定组织: ISO(国际标准化组织) >作用:使网络通信工作流程标准化 >应用层 : 提供用户服务,具体功能应用程序实现 >表示层 : 数据的压缩优化加密 >会话层 : 建立用户级的连接,选择适当的传输服务 >传输层 : 提供传输服务 >网络层 : 路由选择,网络互联 >链路层 : 进行数据交换,控制具体数据的发送 >物理层 : 提供数据传输的硬件保证,网卡接口,传输介质 >优点 >1. 建立了统一的工作流程 >2. 分部清晰,各司其职,每个步骤分工明确 >3. 降低了各个模块之间的耦合度,便于开发 四层模型(TCP/IP模型) 背景 : 实际工作中工程师无法完全按照七层模型要求操作,逐渐演化为更符合实际情况的四层 数据传输过程 1. 发送端由应用程序发送消息,逐层添加首部信息,最终在物理层发送消息包。 2. 发送的消息经过多个节点(交换机,路由器)传输,最终到达目标主机。 3. 目标主机由物理层逐层解析首部消息包,最终到应用程序呈现消息。 网络协议 >在网络数据传输中,都遵循的规定,包括建立什么样的数据结构,什么样的特殊标志等。 网络基础概念 * IP地址 >功能:确定一台主机的网络路由位置 >查看本机网络地址命令: ifconfig >结构 >>IPv4 点分十进制表示 172.40

网络编程

不羁的心 提交于 2020-02-22 04:40:04
# 网络编程 2台机器之间的通信 -- 网卡 - mac地址 - 物理地址 多台机器之间的通信 -- 交换机 mac 世界唯一 ip地址 虚拟地址 随着时间/空间变化而变化 ipv4 4位点分十进制 0.0.0.0 - 255.255.255.255 ipv6 6位:分十六进制 0.0.0.0.0.0 - 255.255.255.255.255.255 127.0.0.1 本机回环地址 0.0.0.0 本机所有的ip 包括127.0.0.1/实际ip 交换机的工作方式: 单播/广播/组播 arp协议 通过ip找mac 交换机:广播 将要找的机器的信息发给局域网内的所有机器 交换机-->单播 返回要找机器的那台机器 公网 ip: 不管在哪都能找见的ip地址 内网 ip: 校园网,公司内网,员工网 保留字段: 专门给内网使用,公网ip永远不会占用内网ip的地址 192.168.0.1 - 192.168.255.255 172.168.0.1 - 172.168.255.255 10.0.0.1 - 10.255.255.255 局域网与局域网之间的机器通信 你要找的两台机器之间的网络是通的 机器a -->机器b 机器a -->交换机 -(网关ip)-> 路由器 -...-> 路由器 -(网关ip)-> 交换机 --> 机器b 我怎么知道机器a和机器b不是一个网段的? 子网掩码

C# 网络编程 - TCP编程

被刻印的时光 ゝ 提交于 2020-02-22 03:30:05
一、TCP的工作过程 首先TCP是一种面向连接的,可靠的,基于字节流的传输层通信协议。TCP的工作过程可以分为三个阶段:一、连接的建立; 二、传输数据; 三、断开连接,下面就对这三个过程分别介绍下: 1.1 连接的建立 TCP的连接建立就像打电话一样, 我们打电话时,拨一个号码的号码并不是立即就可以接通的,期间会有一个“嘟 嘟”的呼叫过程, 这就好比是TCP协议的连接的建立阶段。当我们用TCP编写的程序,必须先建立TCP连接。TCP协议的连接建立通过三次握手来完成的,下面是在网上找的一张TCP三次握手的图片: 下面就对这三次握手简单的介绍: 第一次握手:建立连接时,客户端发送SYN包(seq=x)到服务器,并进入SYN_Send状态,等待服务器确认 第二次握手:服务器收到SYN包,必须确认客户的SYN(ACK=x+1),同时自己也发送一个SYN包(SEQ=y),即SYN+ACK包,此时服务器进入SYN_Recv状态 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ACK=y+1),此包发送完毕,客户端和服务器进入Established(建立)状态,完成三次握手。 简单理解三次握手就是发送一个检验包给对方然后互相确认,双方都接到确认的一个信号时,这时候双方就建立了连接(就像我们打电话时,如果没人说话时就会说下 “喂”,说这句“喂”

Linux—网络编程(day12)

强颜欢笑 提交于 2020-02-22 03:29:42
一、网络基础知识 二、基于TCP的网络编程 二、基于TCP的网络编程 1、编程中用到的辅助函数 (1)主机字节序和网络字节序的转换   因为数据存储方式涉及大端和小端,不同方式通信时需要转换,网络字节序为大端;可以使用以下函数:   #include<arpa.inet.h>   uint32_t htonl(uint_32_t hostlong);   uint16_t htons(uint_16_t hostshort);   uint32_t ntohl(uint_32_t netlong);   uint16_t nonhs(uint_16_t hostshort);   其中:h代表host,n代表net,l代表long,s代表short (2)具体的网络协议地址空间和通用的网络地址空间的转换。   具体的网络协议族有ipv4,ipv6,local,unix等,各自有各自的地址空间,通用地址空间的类型为 struct sockaddr类型,在bind,accept等函数中都要用此类型做参数,可使用以下函数做转换:    inet_pton(3)   int inet_pton(int af, const char *src, void *dst); 功能:   转换src(点分十进制的地址格式)指定的字符串为网络地址结构到af指定的网络地址家族(即text to

pythonnet-网络编程(1)

谁说我不能喝 提交于 2020-02-22 03:27:55
python的网络编程有不少难点,也容易忘记,最近我会陆续发出系统、完整pythonnet知识的博客,一边复习一边分享,感兴趣的可以关注我。 话不多说,开始吧。 网络编程 目的:数据的传输 ISO(国际标准化组织) OSI七层模型----->网络通信的标准化流程 应用层:提供用户服务,具体的内容由特定的程序规定 表示层:提供数据的加密和压缩优化 会话层:确定建立应用链接,选择传输服务 传输层:提供数据传输服务,进行流量控制 网络层:路由选择,网络互联 链路层:提供链路交换,具体消息的发送 物理层:物理硬件,接口,网卡的规定 可划分为四层模型 四层模型 应用层 传输层 网络层 物理链路层 划分为五层模型(TCP/IP模型) 应用层(应用层 表示层 会话层) 传输层 网络层 链路层 物理层 OSI模型的优点:将功能分开,降低网络传输中的耦合度,使开发流程更加清晰, 每部分各司其职。 高聚合:每个模块功能尽量单一,不会多个功能掺杂 低耦合:尽量降低每个模块之间的关联性 网络协议:在网络通信中协议各方必需遵守的规定。如建立什么连接,消息结构如何解析等。 应用层:TFTP HTTP DNS SMTP 传输层:TCP  UDP 网络层:IP 物理层:IEEE 网络相关概念 网络主机:在网络上确定一台主机 本地使用:“localhost”  127.0.0.1 网络地址:"0.0.0.0"   

python 网络编程

夙愿已清 提交于 2020-02-22 01:47:18
网络编程 网络编程要用到的地方是:两个程序的数据进行一定程度上的数据交互 这种涉及到两个程序之间通讯的应用大致分为两种情况: 第一类就是应用类:指的是需要安装的桌面应用 第二类就是web类:比如哔哩哔哩这些需要用浏览器访问的网站。 这些应用的本质就是两个程序之间的通讯,而这两种分类又刚好对应了两个软件开发的架构。 C/S架构 c/s即是:Client(客户端)与Server(服务端)架构,这种架构也是从用户层面(物理层面)来划分的. 这里客户端泛指的就是安装在电脑上的exe程序和安装在手机上的app程序, 服务端就是服务器啦 B/S架构 B/S即是:Browser(浏览器端)与Server(服务端)架构,这种架构是从用户场面来划分的 Browser浏览器,其实也是一种Client客户端,只是这个客户端不需要安装什么,只需要在浏览器上通过 HTTP请求服务器端相关的资源. 网络连接 在网络上,要想找到一台机器,就必须要要有它的IP地址, 而在每台机器的网卡上,在出厂的时候就有了一个全球唯一的mac地址 而通过ip地址就能再到mac地址,这之间要经过一个叫arp协议的协议 互联网的核心就是由一堆协议组成,协议就是标准 osi七层模型 OSI(开放系统互联(Open System Interconnection)) 人们按照分工不同把互联网协议从逻辑上划分了层级: 来源: https:/

python网络编程学习笔记(一)

℡╲_俬逩灬. 提交于 2020-02-21 23:43:55
python网络编程 /*××××××××××××××××××××××××× 创建一个能接受客户端的消息, 在消息前加一个时间戳后返回的tcp服务器 ×××××××××××××××××××××××××*/ #!/usr/bin/env python from socket import * from time import ctime HOST='' PORT=21567 BUFSIZ = 1024 ADDR = (HOST, PORT) tcpSerSock = socket(AF_INET, SOCK_STREAM) tcpSerSock.setsockopt(SOL_SOCKET, SO_REUSEADDR, True) tcpSerSock.setsockopt(SOL_SOCKET, SO_REUSEPORT, True) tcpSerSock.bind(ADDR) tcpSerSock.listen(5) while True: print'waiting for connect ...' tcpCliSock, addr = tcpSerSock.accept() print'... connected from :' ,addr while True: data = tcpCliSock.recv(BUFSIZ) if not data: break