美文网首页
第11-12章

第11-12章

作者: joyyou陈嘉 | 来源:发表于2017-03-07 10:33 被阅读0次

                                                          第11章

域名系统主要用主机与IP地址之间的映射。主机名既可以是一个叫简单的名字,例如solaris或bsdi,也可以是全限定域名,例如solaris.unpbook.com。

每个组织机构往往运行一个或者多个名字服务器,他们通常就是所谓的BIND程序。

struct hostent* gethostbyname(const char *hostname);

struct hostent * gethostbyaddr(const char *addr, socklent_t len, int familuy);

struct hostent

{

char *h_name;

char **h_aliases;

char h_addrtype;

char h_length;

char ** h_addr_list;

}

返回IPv4的地址,当发生错误的事情,并不会设置errno变量,而是将全局的h_error设置为头文件中定义的下列长值之一(HOST_NOT_FOUND,TRY_AGAIN,NO_RECOVERY,NO_DATAS)。

像主机一样,服务也通常考名字来认知。如果我们在程序代码中通过其名字而不是端口号来指代一个服务,而且通过名字到端口号的映射关系保存在一个文件中,那么即时端口号发生变动,仅仅需要修改/etc/services文件中的一行,而不必重新编译。

struct servent *getservbyname(const char *servname, const char * protoname);

struct servent {

char * s_name;

char *s_aliases;

int s_port;

char *s_port;

}

服务名参数必须指定,如果同时指定了协议,那么指定服务器必须匹配协议。

int getaddrinfo(const char *hostname, const char *server, const struct addrinfohints,struct addrinfo * result)

struct addrinfo

{

int ai_flags;

int ai_family;

int ai_socktype;

int ai_protocol;

socklent ai_addrlen;

char * ai_canonname;

struct sockaddr ai_addr;

struct addrinfo *ai_next;

}

通过result指针参数返回一个指向addrinfo结构链表的指针,而adrrinfo结构定义在头文件中,hostname参数是一个主机名或者地址串service参数是一个服务器名或者十进制端口号数串,hints参数可以是一个空指针,也可以是一个指向某个addrinfo结构的指针,调用这在这个结构中填入关于期望返回的信息类型。

const char *gai_strerror(int error)

给出由getaddrinfo返回的非0错误值的名字和含义。

EAI_AGAIN          名字解析中临时失败

EAI_BADFLAGS  ai_flags的值无效

EAI_FAIL              名字解析中不可以恢复的失败

EAI_FAMILY      不支持ai_familu

EAI_MEMORY    内存分配失败

EAI_NONAME  hostname或service未提供,或者不可知。

void freeaddrinfo (struct addrinfo *ai)释放存储控制。

                                                第12章

双栈主机的一个基本特性是其上的IPv6服务器技能处理IPv4客户,又能处理IPv6客户端。这是通过使用IPv4映射到IPv6地址实现的。

(1)IPv6服务器启动后创建一个IPv6的监听套接字,我们假定服务器把通配地址捆绑到该套接字。

(2)IPv4客户端调用gethostbyname找到服务器主机的一个A记录。服务器主机既有一个A记录,有用AAAA记录,因为他通知支持IPv4和IPv6,不过IPv4客户端需要的只是一个A记录。

(3)客户端调用Connect,导致客户端主机发送一个IPv4SYN到服务器主机。

(4)服务器主机接受到这个目的地址为IPv6监听套接字的IPv4 SYN,设置一个标记只是本地连接应用使用IPv4映射到IPv6地址,然后响应以一个IPv4 SYN/ACK。该连接建立后,由accept返回给服务器地址就是这个IPv4映射到IPv6地址。

(5)当服务器主机往这个IPv4映射的IPv6地址发送TCP分节时,其IP栈产生目的地址为所映射的IPv4地址的IPv4载送的数据报。

(6)除非服务器显示检查这个IPv6地址是不是一个IPv4映射IPv6地址,否则他永远不知道自己是不是与一个IPv4客户端通信。

相关文章

  • 第11-12章

    第11章 域名系统主要用主机与IP地址之间的映射。主机名...

  • #早起读书现学现卖#第7期“心理学”专题day10

    #早起读书现学现卖#第7期“心理学”专题 书籍:《这才是心理学》日期:1月23日页码:187-229第11-12章...

  • 《这才是心理学》阅读笔记08

    今天写《这才是心理学》第187-229页,第11-12章 阅读笔记,这本书到这里也读完了。 Q26、 你是否对某些...

  • 《今日简史》阅读笔记-9

    2018.8.6阅读任务 第11-12章P162-185,重点回答以下问题: 1你如何理解战争?你是否陷入与他人争...

  • 阅读《幽微的人性》第11-12章

    2021.11.06 1)阅读《幽微的人性》第11-12章 ①李玫瑾教授谈到XQ时,说到:一定要帮他设计一个圈套。...

  • 2020-10-22

    【标题】跑步圣经第11-12章 【字数】 【正文】 1.原始人天生就会跑步,由于所处的生活环境,他们比今天的我们。...

  • 读书笔记7 |《理智与情感》

    一、阅读时间:2020.4.2 二、阅读内容:第一卷 第11-12章 三、内容介绍 1、情节梗概 玛丽安与威洛比相...

  • 《财富自由之路》二刷6

    题外话: 今天早上睡醒听了一个小时左右的第10章-11-12章,于是,白天看书的速度快了不少,今天一共看了85分钟...

  • 什么更重要?什么最重要?

    打卡第十一天 内容:阅读财富自由之路第11-12章 感想:什么更重要?什么最重要? 人生是一场负重的狂奔,...

  • 4月8日圣经通读

    4月8日圣经通读 □利11-12 □诗13-14 □箴26 □帖前5 利11-12 11章,上帝晓谕百姓哪些地上、...

网友评论

      本文标题:第11-12章

      本文链接:https://www.haomeiwen.com/subject/svapgttx.html