计算机网络——第2章-应用层 计算机网络应用层的主要功能
yuyutoo 2024-12-22 21:48 6 浏览 0 评论
2.1 应用层概述
2.2 客户-服务器方式和对等方式
2.2.1 客户-服务器方式(c/s方式)
2.2.2 对等方式(P2P方式)
2.3 动态主机配置协议DHCP
2.3.1 工作流程
- 如图所示,有两个DHCP服务器和一个DHCP客户,DHCP是TCP/IP协议体系应用层中的协议,使用运输层中UDP提供的服务,会被封装成UDP用户数据报,DHCP服务器的UDP端口为67,DHCP客户的UDP端口号为68。
- 主机DHCP启用后,DHCP客户广播发送DHCP发现报文,该报文中主要的信息有事务ID和DHCP客户端的MAC地址,封装该报文的IP数据报的源IP地址为0.0.0.0,因为主机目前还未分配IP地址,目的地址为广播地址255.255.255.255,因为目前主机不知道有多少个DHCP服务器,所以要广播。
- DHCP服务器接受DHCP发现报文并做出相应,根据DHCP客户端的MAC地址获取配置信息,最终发送DHCP提供报文,该报文的源IP地址为DHCP服务器的IP地址,目的地址为广播地址,因为主机目前还未配置IP地址,为了主机可以收到,只能发送广播地址。
- DHCP客户解析DHCP提供报文,如果DHCP提供报文中的事务ID与自己之前发送的DHCP发现报文中的事务ID相同,则接受该报文。DHCP提供报文中还包含配置信息(IP地址、子网掩码、地址租期、默认网关、DNS服务器,其中IP地址会使用ARP确保所选的IP地址未被占用)。
- 在图中DHCP客户会收到两个DHCP服务器发来的报文,一般选择先到达的报文所对应的服务器,然后向所选择的DHCP服务器发送DHCP请求报文,源地址为0.0.0.0,目的地址为广播地址,报文中封装了事务ID、DHCP客户端的MAC地址、接受的租约中的IP地址、提供此租约的DHCP服务器端的IP地址等信息。
- 假设DHCP客户选择DHCP服务器1发送请求,并且该服务器接受了该请求,于是DHCP服务器1发送DHCP确认报文,报文的源IP地址为DHCP服务器1的IP,目的地址为广播地址。
- 此时主机会使用ARP检测所分配的IP是否已经被占用,如果被占用则会给DHCP服务器发送DHCP谢绝报文,并重新广播DHCP发现报文,否则就可以使用该IP进行通信了。
- 当租用期过了一半时,DHCP客户会向DHCP服务器发送DHCP请求报文来请求更新租期,该报文的源IP地址为租用到的地址,目的地址为DHCP服务器1的地址。
- 此时有三种情况:
- 如果DHCP服务器同意则发回DHCP确认报文,DHCP客户得到了新的租用期。
- 如果DHCP服务器拒绝,则发送DHCP否认报文,DHCP客户必须立即停止使用之前租用到的IP,并重新发送DHCP发现报文来重新申请IP地址。
- 若DHCP服务器没有做出响应,则在过了0.875倍的租用期后DHCP客户重新发送DHCP请求报文,继续等待DHCP服务器做出反应,如果在租用期到之前还未反应,则DHCP客户停止使用租用的IP地址,并重新发送DHCP请求报文。
- DHCP服务器也可以提前终止提供给DHCP客户的租用期,只要发送DHCP释放报文即可。
2.3.2 DHCP中继代理
如下图所示,右边橙色的主机是无法自动获取到IP地址的,因为当主机发送DHCP请求报文时,中间的路由器是不会转发该报文的,而是直接丢弃。解决办法是在路由器中配置DHCP服务器的IP地址使得该路由器成为DHCP的中继代理。
2.4 域名系统DNS(Domain Name System)
2.4.1 域名系统DNS的作用
当用户在web浏览器中输入域名时,首先主机会在自己的DNS缓存中查找该域名对应的IP地址,如果找不到则去DNS服务器查找,DNS服务器中存储了域名和IP地址的数据库,之后将查询结果返回给主机。
2.4.2 层次树状结构的域名系统
2.4.3 域名服务器
2.4.4 域名解析的过程
2.4.5 高速缓存
2.5 文件传送协议FTP
2.5.1 概述
2.5.2 工作原理
2.6 电子邮件
2.6.1 概述
2.6.2 SMTP工作原理
2.6.3 电子邮件格式
2.6.4 邮件读取协议
2.7 万维网WWW
2.7.1 概述
2.7.2 超文本传输协议HTTP
2.7.3 Cookie
2.7.4 万维网缓存与代理服务器
2.7.5 习题
2.8 Socket编程
2.8.1 TCP套接字编程
socketaddr_in
IP地址和port捆绑关系的数据结构(指示进程的端节点)
struct sockaddr_in {
short sin_family; // AF_INET 地址簇
u_short sin_port; // port
struct in_addr sin_addr ; // IP address, unsigned long
char sin_zero[8]; // align 对齐
};
hostent
域名和IP地址的数据结构
struct hostent{
char *h_name; // 主机域名
char **h_aliases; // 别名
int h_addrtype;
int h_length; // 地址长度
char **h_addr_list;
#define h_addr h_addr_list[0];
};
2.8.2 UDP套接字编程
相关推荐
- 自卑的人容易患抑郁症吗?(自卑会导致抑郁吗)
-
Filephoto[Photo/IC]Lowself-esteemmakesusfeelbadaboutourselves.Butdidyouknowthatovert...
- 中考典型同(近)义词组(同义词考题)
-
中考典型同(近)义词组...
- BroadcastReceiver的原理和使用(broadcast-suppression)
-
一、使用中注意的几点1.动态注册、静态注册的优先级在AndroidManifest.xml中静态注册的receiver比在代码中用registerReceiver动态注册的优先级要低。发送方在send...
- Arduino通过串口透传ESP 13板与java程序交互
-
ESP13---是一个无线板子,配置通过热点通信Arduino通过串口透传ESP13板与java程序交互...
- zookeeper的Leader选举源码解析(zookeeper角色选举角色包括)
-
作者:京东物流梁吉超zookeeper是一个分布式服务框架,主要解决分布式应用中常见的多种数据问题,例如集群管理,状态同步等。为解决这些问题zookeeper需要Leader选举进行保障数据的强一致...
- 接待外国人英文口语(接待外国友人的英语口语对话)
-
接待外国人英文口语询问访客身份: MayIhaveyourname,please? 请问您贵姓? Whatcompanyareyoufrom? 您是哪个公司的? Could...
- 一文深入理解AP架构Nacos注册原理
-
Nacos简介Nacos是一款阿里巴巴开源用于管理分布式微服务的中间件,能够帮助开发人员快速实现动态服务发现、服务配置、服务元数据及流量管理等。这篇文章主要剖析一下Nacos作为注册中心时其服务注册与...
- Android面试宝典之终极大招(android面试及答案)
-
以下内容来自兆隆IT云学院就业部,根据多年成功就业服务经验,以及职业素养课程部分内容,归纳总结:18.请描述一下Intent和IntentFilter。Android中通过Intent...
- 除了Crontab,Swoole Timer也可以实现定时任务的
-
一般的定时器是怎么实现的呢?我总结如下:1.使用Crontab工具,写一个shell脚本,在脚本中调用PHP文件,然后定期执行该脚本;2.ignore_user_abort()和set_time_li...
- Spark源码阅读:DataFrame.collect 作业提交流程思维导图
-
本文分为两个部分:作业提交流程思维导图关键函数列表作业提交流程思维导图...
- 使用Xamarin和Visual Studio开发Android可穿戴设备应用
-
搭建开发环境我们需要做的第一件事情是安装必要的工具。因此,你需要首先安装VisualStudio。如果您使用的是VisualStudio2010,2012或2013,那么请确保它是一个专业版本或...
- Android开发者必知的5个开源库(android 开发相关源码精编解析)
-
过去的时间里,Android开发逐步走向成熟,一个个与Android相关的开发工具也层出不穷。不过,在面对各种新鲜事物时,不要忘了那些我们每天使用的大量开源库。在这里,向大家介绍的就是,在这个任劳任怨...
- Android事件总线还能怎么玩?(android实现事件处理的步骤)
-
顾名思义,AndroidEventBus是一个Android平台的事件总线框架,它简化了Activity、Fragment、Service等组件之间的交互,很大程度上降低了它们之间的耦合,使我们的代码...
- Android 开发中文引导-应用小部件
-
应用小部件是可以嵌入其它应用(例如主屏幕)并收到定期更新的微型应用视图。这些视图在用户界面中被叫做小部件,并可以用应用小部件提供者发布。可以容纳其他应用部件的应用组件叫做应用部件的宿主(1)。下面的截...
你 发表评论:
欢迎- 一周热门
-
-
前端面试:iframe 的优缺点? iframe有那些缺点
-
带斜线的表头制作好了,如何填充内容?这几种方法你更喜欢哪个?
-
漫学笔记之PHP.ini常用的配置信息
-
推荐7个模板代码和其他游戏源码下载的网址
-
其实模版网站在开发工作中很重要,推荐几个参考站给大家
-
[干货] JAVA - JVM - 2 内存两分 [干货]+java+-+jvm+-+2+内存两分吗
-
正在学习使用python搭建自动化测试框架?这个系统包你可能会用到
-
织梦(Dedecms)建站教程 织梦建站详细步骤
-
【开源分享】2024PHP在线客服系统源码(搭建教程+终身使用)
-
2024PHP在线客服系统源码+完全开源 带详细搭建教程
-
- 最近发表
-
- 自卑的人容易患抑郁症吗?(自卑会导致抑郁吗)
- 中考典型同(近)义词组(同义词考题)
- WPF 消息传递简明教程(wpf messagebox.show)
- BroadcastReceiver的原理和使用(broadcast-suppression)
- Arduino通过串口透传ESP 13板与java程序交互
- zookeeper的Leader选举源码解析(zookeeper角色选举角色包括)
- 接待外国人英文口语(接待外国友人的英语口语对话)
- 一文深入理解AP架构Nacos注册原理
- Android面试宝典之终极大招(android面试及答案)
- 除了Crontab,Swoole Timer也可以实现定时任务的
- 标签列表
-
- mybatis plus (70)
- scheduledtask (71)
- css滚动条 (60)
- java学生成绩管理系统 (59)
- 结构体数组 (69)
- databasemetadata (64)
- javastatic (68)
- jsp实用教程 (53)
- fontawesome (57)
- widget开发 (57)
- vb net教程 (62)
- hibernate 教程 (63)
- case语句 (57)
- svn连接 (74)
- directoryindex (69)
- session timeout (58)
- textbox换行 (67)
- extension_dir (64)
- linearlayout (58)
- vba高级教程 (75)
- iframe用法 (58)
- sqlparameter (59)
- trim函数 (59)
- flex布局 (63)
- contextloaderlistener (56)