网络编程

DNS:

DNS就是域名系统,相当于把ip地址包装成方便于记忆的名字,例如baidu、taobao、jd等等,方便了用户去访问互联网,这样使用域名的话就不需要去记忆直接被机器读取的ip地址了。

通过域名访问互联网时,会先进行域名解析,然后会将ip地址查询出来,再通过ip地址访问到互联网。一般在就计算机上都会有本地域名缓存,域名缓存一般保存10分钟左右。通过在cmd里输入ipconfig/flushdns命令,可以清空本地域名缓存。访问网页时一般使用的是80端口。

示意图:

DNS智能ip解析:

在原中国电信集团按南北地域分家,新的中国电信和网通集团随即成立,互联网的骨干网也被一分为二了,北有网通、南有电信。

从此,细心的网民可以发现,有些经常访问的网站速度一下子慢了下来,有时候还有访问不到的情况出现。例如北方地区的网络用户访问中国网通的服务器会非常快,而访问中国电信的服务器时,感觉非常慢。

现在网通和联通已经合并在一起,经常玩游戏的人也会发现有一个现象就是,很多游戏在登录时都可以选择网通区或电信区,这是为了选择自己的网络运营商类型避免严重出现连接速度慢的问题。

DNS智能ip解析就是用于解决这种网通、电信互联的时候速度慢的问题,DNS智能解析最基本的功能是可以智能的判断访问你网站的用户,然后根据不同的访问者把你的域名分别解析成不同的IP地址。

如访问者是网通用户,DNS智能解析服务器会把你的域名对应的网通IP地址解析给这个访问者。如访问者是电信用户,DNS策略解析服务器会把您域名对应的电信IP地址解析给这个访问者。

中国网络运营商:

目前国内的主要网络运营商有电信、联通、移动,移动是和铁通合并在了一起才开始做网络运营的,是目前较差的网络运营商,所以不在此多做介绍,主要是电信和联通的介绍。

电信和联通的网络有一些不同,例如:电信分配的是独立的外网ip地址,而联通分配的是城域网的ip地址,所以电信能够做到点对点通信,联通则不能,这是因为电信有独立的ip地址,所以可以被直接被其他计算机访问到,但是这样也增加了一些风险,使用的是电信网络的话别人给你发信息是会接收的,所以有被数据包攻击的风险或者被当肉鸡。

联通分配的是城域网的ip地址所以无法点对点通信,而且联通只会接收主动连接的服务器信息,除此之外其他的信息则一概不接收,这样相对于电信来说安全性就稍微高一些。 关于网络的上行和下行上电信是9:1的比例下行9上行1,联通则是8:2或者5:5,一般情况下是8:2,如果有要求可以申请为5:5。以上所说的比例如果是在服务器机房的网络上,一般是可以向运营商申请不同的比例的。

示意图:

VPN:

VPN就是个人虚拟专用网络通道,虚拟专用网络的功能是:在公用网络上建立专用网络,进行加密通讯。VPN网关通过对数据包的加密和数据包目标地址的转换实现远程访问。VPN有多种分类方式,主要是按协议进行分类。VPN可通过服务器、硬件、软件等多种方式实现。

简单来说就是使用自己的计算机连接另一台计算机,然后使用这台外面的计算机访问互联网,然后将互联网反馈的数据转发到自己的计算机上。用翻墙访问Facebook举例子:在国内是无法访问Facebook的,所以我们需要翻墙出去才能访问,所谓翻墙就是使用VPN连接一台计算机,例如有台计算机在香港,内地的计算机连接到这台香港的计算机后,就可以通过这台计算机的网络去访问互联网,然后这台计算机会将互联网的数据返回给内地的计算机,这样就可以在内地计算机访问Facebook了,这种形成的网络就称为虚拟专用网络VPN。

示意图:

VPS:

VPS是虚拟专用服务器(Virtual Private Server)的简称,虚拟专用服务器就是使用虚拟机技术把一台物理服务器分为多个虚拟服务器,每个VPS都可分配独立公网IP地址、独立操作系统、实现不同VPS间磁盘空间、内存、CPU资源、进程和系统配置的隔离,为用户和应用程序模拟出“独占”使用计算资源的体验。VPS可以像独立服务器一样,重装操作系统,安装程序,单独重启服务器。说白了就是在服务器上装了好多个虚拟机,虚拟机之间都是独立的,然后将这些虚拟机弄个高大上的名字就可以卖出去赚钱了。

集群:

集群就是多个服务器运行共同服务,在访问量大的时候就需要进行集群,集群越多速度越快,对服务器的压力越小。当一个服务器不够用的时候,理所当然的就需要进行集群。

流程:

网站>>>DNS>>>防火墙>>>负载均衡器>>>集群服务。

数据服务器:

数据服务器就是处理数据部分的,它们的数据是同步的,会有一个集群管理器(综合服务器),用来分配数据给哪个数据服务器处理,所有的管理和调节都在这里进行。

为什么需要集群:

前面也讲过当访问、处理的数据量大的时候,一台服务器处理不过来,自然就需要进行数据库集群,集群的数量越多,处理数据就越快。就像一个cpu处理不过来就两个cpu、三个cup、四个cpu以此类推,当然有钱的话这个数量没有上限。就像是雇佣工人干活一样,当一个工人干不完的时候就需要再雇佣多几个工人帮忙,越多的工人干活就越快,对于每个工人来说的负担也就越小。

负载均衡器:

负载均衡器是用于增加数据吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。它就像一个分配工作的人员一样,均匀的将工作分配给每个服务器上,让这些服务器均匀稳定的完成工作。

负载均衡器图片:

防火墙:

防火墙是一种位于内部网络与外部网络之间的网络安全系统。一项信息安全的防护系统,依照特定的规则,允许或是限制传输的数据通过。所以主要就是用于防止一些恶意攻击的,过滤掉一些不安全的数据的。

防火墙图片:

TCP协议:

TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。

因为基于字节流所以又称为套接字,此协议安全可靠,能够建立长时间连接,但是传输速度较慢,一般适用于登录界面之类的对速度要求不高对安全性要求高的业务。

UDP协议:

UDP 是User Datagram Protocol的简称,中文名是用户数据报文协议,是OSI(Open System Interconnection,开放式系统互联)

参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,IETF RFC 768是UDP的正式规范。UDP在IP报文的协议号是17。

UDP协议全称是用户数据报协议,在网络中它与TCP协议一样用于处理数据包,是一种无连接的协议。在OSI模型中,在第四层——传输层,处于IP协议的上一层。UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。UDP用来支持那些需要在计算机之间传输数据的网络应用。包括网络视频会议系统在内的众多的客户/服务器模式的网络应用都需要使用UDP协议。UDP协议从问世至今已经被使用了很多年,虽然其最初的光彩已经被一些类似协议所掩盖,但是即使是在今天UDP仍然不失为一项非常实用和可行的网络传输层协议。

与所熟知的TCP(传输控制协议)协议一样,UDP协议直接位于IP(网际协议)协议的顶层。根据OSI(开放系统互连)参考模型,UDP和TCP都属于传输层协议。UDP协议的主要作用是将网络数据流量压缩成数据包的形式。一个典型的数据包就是一个二进制数据的传输单位。每一个数据包的前8个字节用来包含报头信息,剩余字节则用来包含具体的传输数据。

所以总结来说,UDP就是较不安全,不能建立连接,但是速度很快快,不过网络堵塞的时候就会有丢包的情况,而且UDP的包是没有顺序的,UDP适合做游戏、在线视频、在线直播等对传输速度要求高的,安全性要求较小的业务中。

时间: 2024-12-28 16:42:20

网络编程的相关文章

C#网络编程技术FastSocket实战项目演练

一.FastSocket课程介绍 .NET框架虽然微软提供了socket通信的类库,但是还有很多事情要自己处理,比如TCP协议需要处理分包.组包.粘包.维护连接列表等,UDP协议需要处理丢包.乱序,而且对于多连接并发,还要自己处理多线程等等.本期分享课程阿笨给大家带来的是来源于github开源Socket通信中间件:FastSocket,目的就是把大家从繁琐的网络编程技术中彻底地解放和释放出来. 阿笨只想安安静静的学习下网络编程技术Socket后,将学习的成果直接灵活的运用到自己的实际项目中去.

网络编程 -- RPC实现原理 -- RPC -- 迭代版本V1 -- 本地方法调用

网络编程 -- RPC实现原理 -- 目录 啦啦啦 V2--RPC -- 本地方法调用:不通过网络 入门 1. RPCObjectProxy rpcObjectProxy = new RPCObjectProxy(new LocalRPCClient()); : 绑定目标对象 2. IUserService userService = (IUserService) rpcObjectProxy.create(IUserService.class); :返回代理类 3. List<User> u

C#网络程序设计(1)网络编程常识与C#常用特性

    网络程序设计能够帮我们了解联网应用的底层通信原理!     (1)网络编程常识: 1)什么是网络编程 只有主要实现进程(线程)相互通信和基本的网络应用原理性(协议)功能的程序,才能算是真正的网络编程. 2)网络编程的层次 现实中的互联网是按照"TCP/IP分层协议栈"的体系结构构建的,因此程序员必须搞清楚自己要做的是哪个层次上的编程工作. TCP/IP协议体系的实现情况: 其中,网络接口层已经被大多数计算机生产厂家集成在了主板上,也就是经常所说的网卡(NIC).windows操

9. 网络编程:

网络编程: 端口: 物理端口: 逻辑端口:用于标识进程的逻辑地址,不同进程的标识:有效端口:0~65535,其中0~1024系统使用或保留端口. java 中ip对象:InetAddress. import java.net.*; class  IPDemo{ public static void main(String[] args) throws UnknownHostException{ //通过名称(ip字符串or主机名)来获取一个ip对象. InetAddress ip = InetA

物联网网络编程、Web编程综述

本文是基于嵌入式物联网研发工程师的视觉对网络编程和web编程进行阐述.对于专注J2EE后端服务开发的童鞋们来说,这篇文章可能稍显简单.但是网络编程和web编程对于绝大部分嵌入式物联网工程师来说是一块真空领域. 的确,物联网研发应该以团队协作分工的方式进行,所以有嵌入式设备端.网关.web前端.APP.后端开发等专属岗位.作为系统架构师,自然需要掌握各种岗位的关键技术.作为嵌入式工程师,掌握网络编程.web编程,能够极大地拓展自己的视野和架构思维,能够主动地对系统的各种协议和应用场景提出优化的见解

linux网络编程-(socket套接字编程UDP传输)

今天我们来介绍一下在linux网络环境下使用socket套接字实现两个进程下文件的上传,下载,和退出操作! 在socket套接字编程中,我们当然可以基于TCP的传输协议来进行传输,但是在文件的传输中,如果我们使用TCP传输,会造成传输速度较慢的情况,所以我们在进行文件传输的过程中,最好要使用UDP传输. 在其中,我们需要写两个程序,一个客户端,一个服务端,在一个终端中,先运行服务端,在运行客户端,在服务端和客户端都输入IP地址和端口号,注意服务端和客户端的端口号要相同,然后选择功能,在linux

UNIX网络编程卷1 回射客户程序 TCP客户程序设计范式

本文为senlie原创,转载请保留此地址:http://blog.csdn.net/zhengsenlie 下面我会介绍同一个使用 TCP 协议的客户端程序的几个不同版本,分别是停等版本.select 加阻塞式 I/O 版本. 非阻塞式 I/O 版本.fork 版本.线程化版本.它们都由同一个 main 函数调用来实现同一个功能,即回射程序客户端. 它从标准输入读入一行文本,写到服务器上,读取服务器对该行的回射,并把回射行写到标准输出上. 其中,非阻塞式 I/O 版本是所有版本中执行速度最快的,

黑马程序员——网络编程篇

------- android培训.java培训.期待与您交流! ---------- 概述   1.网络模型        (1).OSI参考模型        (2).TCP/IP参考模型   2.网络通讯要素         (1).IP地址        (2).端口号         (3).传输协议    3.过程        1,找到对方IP. 2,数据要发送到对方指定的应用程序上.为了标识这些应用程序,所以给这些网络应用程序都用数字进行标识. 为了方便称呼这个数据,叫做端口(逻

网络编程TCP/IP实现客户端与客户端聊天

一.TCP/IP协议 既然是网络编程,涉及几个系统之间的交互,那么首先要考虑的是如何准确的定位到网络上的一台或几台主机,另一个是如何进行可靠高效的数据传输.这里就要使用到TCP/IP协议. TCP/IP协议(传输控制协议)由网络层的IP协议和传输层的TCP协议组成.IP层负责网络主机的定位,数据传输的路由,由IP地址可以唯一的确定Internet上的一台主机.TCP层负责面向应用的可靠的或非可靠的数据传输机制,这是网络编程的主要对象. 二.TCP与UDP TCP是一种面向连接的保证可靠传输的协议

(一)理解网络编程和套接字

学习<TCP/IP网络编程> 韩 尹圣雨 著 金国哲 译 套接字类似电话 一.服务器端套接字(listening套接字)---接电话套接字 ①调用socket函数---安装电话机 #include <sys/socket.h> int socket(int domain, int type, int protocol); //成功时返回文件描述符,失败时返回-1 ②调用bind函数---分配电话号码 #include <sys/socket.h> int bind(in