套接字产生的原因:

当应用进程通过传输层进行通信时 ,TCP和 UDP将面临同时为多个应用进程提供并行通信的问题。多个TCP连接或多个应用程序进程可能需要通过同一个TCP协议端口传输数据。 为了区别每个应用进程和连接,许多计算机的操作系统为应用进程和TCP/IP协议簇提供了称为套接字的接口

应用进程通过套接字接入到网络:

套接字的定义:

套接字是同一台主机应用进程和传输层的接口。因为它是建立在网络应用程序之上的可编程接口,所以它也被称为API﹙应用程序接口﹚,Socket可以看成在两个程序进行通讯连接中的一个端点,一个程序将一段信息写入Socket中,该Socket将这段信息发送给另外一个Socket中,使这段信息能传送到其他程序中

域名系统DNS:

优点:容易记忆。所以,当我们访问主机(主要是服务器)的时候经常使用域名。

缺点:域名为网络中的主机或路由器提供的信息很少,而且,域名是由可变长度的字符构成的,所以他们很难被路由器处理。

IP地址:

优点:它为网络中的主机提供较多的位置信息, 同时IP地址也适合路由器处理。

缺点:抽象和难于记忆。 当我们在网络层访问主机的时候使用IP地址。

既然域名和IP地址可以不同层次上标志主机 或路由器,那么如何实现域名和IP地址之间 的映射? 

通过域名解析协议(DNS)协议来实现域名和IP地址之间的映射。

DNS既代表域名系统又代表域名解析协议。 

许多应用层软件经常直接使用域名系统 DNS (Domain Name System),但计算机的用户只是间接而不是直接使用域名系统。

因特网采用层次结构的命名树作为主机的名字,并使用分布式的域名系统 DNS。

名字到IP地址的解析是由若干个域名服务器程序完成的。

域名服务器程序在专设的结点上运行,运行该程序的机器称为域名服务器。 

因特网采用了层次树状结构的命名方法。 任何一个连接在因特网上的主机或路由器,都有一个唯一的层次结构的名字,即域名。

域名的结构由标号序列组成,各标号之间用点隔开: … . 三级域名 . 二级域名 . 顶级域名;各标号分别代表不同级别的域名。

域名只是个逻辑概念,并不代表计算机所在的物理地点。 变长的域名和使用有助记忆的字符串,是为了便于人来使用。而IP地址是定长的32位二进制数字则非常便于机器进行处理,却不适合人们记忆。

一个服务器所负责管辖的(或有权限的)范围叫做区(zone)。 每一个区设置相应的权限域名服务器,用来保存该区中的所有主机的域名到IP地址的映射。 DNS服务器的管辖范围不是以“域”为单位,而是以“区”为单位。 

套接字和域名系统DNS的更多相关文章

  1. 套接字名与DNS

    2 现代地址解析 首先要说Python套接字最强大的工具之一-------getaddrinfo() 这个函数可能是我们用来将用户指定的主机名和端口号转换为可供套接字方法使用的地址时所需的唯一方法. ...

  2. 基本套接字编程(7) -- udp篇

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

  3. linux学习笔记之套接字

    一.基础知识. 1:套接字基础. 1,是通信端点的抽象. 2,在UNIX类系统中被当作是一种文件描述符. 3,套接字通信域. 域 描述 AF_INET IPV4因特网域 AF_INET6 IPV6因特 ...

  4. Linux编程---套接字

    网络相关的东西差点儿都是建立在套接字之上.所以这个内容对于程序猿来说还是蛮重要的啊. 事实上套接字也就是一个特殊的设备文件而已,我始终不能明确为什么要叫套接字.这么个奇怪的名字.只是还是就这样算了吧. ...

  5. 5-8套接字socket

    socket概念 socket层 理解socket Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口.在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协 ...

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

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

  7. 《Python》网络编程之客户端/服务端框架、套接字(socket)初使用

    一.软件开发的机构 我们了解的涉及到两个程序之间通讯的应用大致可以分为两种: 第一种是应用类:QQ.微信.网盘等这一类是属于需要安装的桌面应用 第二种是web类:比如百度.知乎.博客园等使用浏览器访问 ...

  8. 基本UDP套接字编程

    概述 使用TCP编写的应用程序和使用UDP编写的应用程序之间存在一些本质差异,其原因在于这两个传输层之间的差别:UDP是无连接不可靠的数据报协议,非常不同于TCP提供的面向连接的可靠字节流.然而相比T ...

  9. 《Unix网络编程卷1:套接字联网API》读书笔记

    第一部分:简介和TCP/IP 第1章:简介 第2章:传输层:TCP.UDP和SCTP TCP:传输控制协议,复杂.可靠.面向连接协议 UDP:用户数据报协议,简单.不可靠.无连接协议 SCTP:流控制 ...

随机推荐

  1. Educational Codeforces Round 15_B. Powers of Two

    B. Powers of Two time limit per test 3 seconds memory limit per test 256 megabytes input standard in ...

  2. webstrom管理git

    先写一段 webstrom文件名变色:1.绿色的文件添加 2.蓝色的原有文件修改 如果出现““No such file or directory”或类似的语句,说明缺少ssh的key.那么我们就得创建 ...

  3. SQL SERVER与C#的数据类型对应表

    序号 类别 SQLServer C Sharp 备注 1 整数 bit Boolean True转换为1False转换为0 2 tinyint Byte C Sharp 数据类型都位于System命名 ...

  4. [QML] Connections元素介绍

    一个Connections对象创建一个了一个QML信号的连接.在QML中,我们连接信号通常是用使用"on<Signal>"来处理的,如下所示: MouseArea { ...

  5. 确定当前Python环境中的site-packages目录位置

    引入“搜索路径”这个概念是因为在使用import语句时,当解释器遇到import语句,如果模块在当前的搜索路径就会被导入. 搜索路径是一个解释器会先进行搜索的所有目录的列表. 那么python如何添加 ...

  6. mongodb 慢SQL查询

    在 MySQL中,慢查询日志是经常作为我们优化数据库的依据,那在MongoDB中是否有类似的功能呢?答案是肯定的,那就是Mongo Database Profiler.不仅有,而且还有一些比MySQL ...

  7. 为PO手写添加配置文件(hbm.xml)

  8. J2EE判断重复的数据

    import java.util.ArrayList; import java.util.List; import org.junit.Test; /** * 判断重复的数据 * @author Ya ...

  9. [maven] 新建项目一直提示loading archetype list

    Maven's JRE is running out of memory. Under Build > Build Tools > Maven > Importing, set &q ...

  10. Spring Boot 系列教程9-swagger-前后端分离后的标准

    前后端分离的必要 现在的趋势发展,需要把前后端开发和部署做到真正的分离 做前端的谁也不想用Maven或者Gradle作为构建工具 做后端的谁也不想要用Grunt或者Gulp作为构建工具 前后端需要通过 ...