计算机网络 - 应用层(学习日志)
借鉴于:CyC大佬(抄的部分,加自己理解以及补充)
一,域名
- 根域名(.)
- 顶级域名(com)
- 二级域名(google)
- 。。。
DNS(分布式数据库)。存储了主机名和IP地址之间的转化。也就是我们设置的DNS(8.8.8.8是谷歌提供的服务器)。传输时可以使用TCP或者UDP进行传输,端口号是53。
二,文件传输协议
FTP使用TCP连接。使用以下两个连接来传输文件:
- 控制连接:服务器打开端口号 21 等待客户端的连接,客户端主动建立连接后,使用这个连接将客户端的命令传送给服务器,并传回服务器的应答。(个人理解是用命令告诉服务器我要什么内容)打开xftp的时候会默认为是21端口。
- 数据连接:用来传送一个文件数据。20端口
根据数据连接是否是服务器端主动建立,FTP 有主动和被动两种模式:
- 主动模式:服务器端主动建立数据连接,其中服务器端的端口号为 20,客户端的端口号随机,但是必须大于 1024,因为 0~1023是熟知端口号( 由IANA指派和控制,我默认为是系统占用的端口号)。
- 被动模式:客户端主动建立数据连接,其中客户端的端口号由客户端自己指定,服务器端的端口号随机。
三,DHCP(动态主机配置协议)
DHCP (Dynamic Host Configuration Protocol) 用户不再需要手动配置 IP 地址等信息。
DHCP 工作过程如下:
- 客户端发送 Discover 报文,该报文的目的地址为 255.255.255.255:67,源地址为 0.0.0.0:68,被放入 UDP 中,该报文被广播到同一个子网的所有主机上。如果客户端和 DHCP 服务器不在同一个子网,就需要使用中继代理。
- DHCP 服务器收到 Discover 报文之后,发送 Offer 报文给客户端,该报文包含了客户端所需要的信息。因为客户端可能收到多个 DHCP 服务器提供的信息,因此客户端需要进行选择。
- 如果客户端选择了某个 DHCP 服务器提供的信息,那么就发送 Request 报文给该 DHCP 服务器。DHCP 服务器发送 Ack 报文,表示客户端此时可以使用提供给它的信息。
四,远程登录协议
TELNET 用于登录到远程主机上,并且远程主机上的输出也会返回。
TELNET 可以适应许多计算机和操作系统的差异,例如不同操作系统系统的换行符定义。
可以使用telnet查看对方的某个端口是否打开telnet IP PORT
五,电子邮件协议
一个电子邮件系统由三部分组成:用户代理、邮件服务器以及邮件协议。
邮件协议包含发送协议和读取协议,发送协议常用 SMTP,读取协议常用 POP3 和 IMAP。
1,SMTP
SMTP 只能发送 ASCII 码,而互联网邮件扩充 MIME 可以发送二进制文件。MIME 并没有改动或者取代 SMTP,而是增加邮件主体的结构,定义了非 ASCII 码的编码规则。
(qq邮箱需要手动打开SMTP才可以使用代理进行发送邮件)
2,POP3
POP3 的特点是只要用户从服务器上读取了邮件,就把该邮件删除。但最新版本的 POP3 可以不删除邮件。
3,IMAP
IMAP 协议中客户端和服务器上的邮件保持同步,如果不手动删除邮件,那么服务器上的邮件也不会被删除。IMAP 这种做法可以让用户随时随地去访问服务器上的邮件。
web页面的请求过程
本地主机与服务器间的通信是两个进程间相互发送报文。而进程是通过socket套接字发送和接收报文的,想要收发socket,首先主机与服务器需要通过TCP三次握手建立TCP连接,连接建立之后,把请求报文放入套接字,然后经过传输层、网络层、数据链路层,层层封装,最终经过以太网路由转发给目的服务器;服务器收到请求后,返回响应报文,本地主机接收到响应报文之后,经由浏览器渲染展示。
1,DHCP 配置主机信息
流程:
客户端发送(应用层生成一个DHCP请求报文)
->传输层 放入UDP报文段(源端口68,目的端口67)
->网络层 添加头部封装成IP数据报(头部包含源IP0.0.0.0和目的IP255.255.255.255广播IP)
->数据链路层添加头部封装成以太网帧,(头部主要包含源MAC:自己的MAC和目的MACFF:FF:FF:FF:FF:FF)
->以太网帧被发送到交换机(交换机修改转发表记录MAC),然后在他的所有出口广播这个帧
->与交换机相连的默认网关路由器接收到了这个广播帧,进行解析,提取出IP数据报,发现目的IP是广播IP,就交给传输层,传输层又提取出 DHCP 请求交给应用层, DHCP 服务器就收到了该 DHCP 请求。
->DHCP 服务器为此生成一个 DHCP ACK 报文(包含IP,DNS服务器IP,默认网关路由器的IP,子网掩码)
服务器发送IP地址,DNS服务器的IP地址(这个是手动联网也要配置的)。默认网关路由器的IP和子网掩码(类似于网段,你是属于哪一个局域网)->像之前一样封装成帧->客户端接受并配置
应用层(报文)->传输层(报文段或数据报)->网络层(封装成组)->数据链路层(帧)->物理层(比特流)
- 假设主机最开始没有 IP 地址以及其它信息,那么就需要先使用 DHCP 来获取。
- 主机生成一个 DHCP 请求报文,并将这个报文放入具有目的端口 67 和源端口 68 的 UDP 报文段中。
- 该报文段则被放入在一个具有广播 IP 目的地址(255.255.255.255) 和源 IP 地址(0.0.0.0)的 IP 数据报中。
- 该数据报则被放置在 MAC 帧中,该帧具有目的地址 ,将广播到与交换机连接的所有设备。
- 连接在交换机的 DHCP 服务器收到广播帧之后,不断地向上分解得到 IP 数据报、UDP 报文段、DHCP 请求报文,之后生成 DHCP ACK 报文,该报文包含以下信息:IP 地址、DNS 服务器的 IP 地址、默认网关路由器的 IP 地址和子网掩码。该报文被放入 UDP 报文段中,UDP 报文段有被放入 IP 数据报中,最后放入 MAC 帧中。
- 该帧的目的地址是请求主机的 MAC 地址,因为交换机具有自学习能力,之前主机发送了广播帧之后就记录了 MAC 地址到其转发接口的交换表项,因此现在交换机就可以直接知道应该向哪个接口发送该帧。
- 主机收到该帧后,不断分解得到 DHCP 报文。之后就配置它的 IP 地址、子网掩码和 DNS 服务器的 IP 地址,并在其 IP 转发表中安装默认网关。
2. ARP 解析 MAC 地址
在局域网内部是用 MAC 定位的。
- 主机通过浏览器生成一个 TCP 套接字,套接字向 HTTP 服务器发送 HTTP 请求。为了生成该套接字,主机需要知道网站的域名对应的 IP 地址。
- 主机生成一个 DNS 查询报文,该报文具有 53 号端口,因为 DNS 服务器的端口号是 53。
- 该 DNS 查询报文被放入目的地址为 DNS 服务器 IP 地址的 IP 数据报中。
- 该 IP 数据报被放入一个以太网帧中,该帧将发送到网关路由器。
- DHCP 过程只知道网关路由器的 IP 地址,为了获取网关路由器的 MAC 地址,需要使用 ARP 协议。
- 主机生成一个包含目的地址为网关路由器 IP 地址的 ARP 查询报文,将该 ARP 查询报文放入一个具有广播目的地址的以太网帧中,并向交换机发送该以太网帧,交换机将该帧转发给所有的连接设备,包括网关路由器。
- 网关路由器接收到该帧后,不断向上分解得到 ARP 报文,发现其中的 IP 地址与其接口的 IP 地址匹配,因此就发送一个 ARP 回答报文,包含了它的 MAC 地址,发回给主机。
3,DNS 解析域名
- 知道了网关路由器的 MAC 地址之后,就可以继续 DNS 的解析过程了。
- 网关路由器接收到包含 DNS 查询报文的以太网帧后,抽取出 IP 数据报,并根据转发表决定该 IP 数据报应该转发的路由器。
- 因为路由器具有内部网关协议(RIP、OSPF)和外部网关协议(BGP)这两种路由选择协议,因此路由表中已经配置了网关路由器到达 DNS 服务器的路由表项。
- 到达 DNS 服务器之后,DNS 服务器抽取出 DNS 查询报文,并在 DNS 数据库中查找待解析的域名。
- 找到 DNS 记录之后,发送 DNS 回答报文,将该回答报文放入 UDP 报文段中,然后放入 IP 数据报中,通过路由器反向转发回网关路由器,并经过以太网交换机到达主机。
4,HTTP请求界面
- 有了 HTTP 服务器的 IP 地址之后,主机就能够生成 TCP 套接字,该套接字将用于向 Web 服务器发送 HTTP GET 报文。
- 在生成 TCP 套接字之前,必须先与 HTTP 服务器进行三次握手来建立连接。生成一个具有目的端口 80 的 TCP SYN 报文段,并向 HTTP 服务器发送该报文段。
- HTTP 服务器收到该报文段之后,生成 TCP SYN ACK 报文段,发回给主机。
- 连接建立之后,浏览器生成 HTTP GET 报文,并交付给 HTTP 服务器。
- HTTP 服务器从 TCP 套接字读取 HTTP GET 报文,生成一个 HTTP 响应报文,将 Web 页面内容放入报文主体中,发回给主机。
- 浏览器收到 HTTP 响应报文后,抽取出 Web 页面内容,之后进行渲染,显示 Web 页面。
附录:
一,常用的熟知端口:
1—TCP多路复用
5—远程作业输入
7—回声
9—丢弃
11—主动用户
13—白天
15—谁在线或NETSTAT
17—标引日期
19—字符生成器
20—文件传送协议(FTP)(数据)
21—文件传送协议(FTP)(控制)
23—远程登陆协议(Telnet)
25—简单邮件传送协议(SNMP)
37—时间
39—资源定位协议
42—主机名称服务器
43—是谁
53—域名服务器(DNS)
67—引导协议(BOOTP)服务器
68—引导协议(BOOTP)客户机
69—普通文件传送(TFTP)
75—任意专有拨出服务器
77—任意专有RJE服务
79—指针
80—超文本传送协议(HTTP)
101—NIC主机名称服务器
102—ISO-TSAP
103—X.400邮件服务
104—X.400邮件发送
111—Sun Microsystems 的远程过程调用
113—认证服务
123—网络时间协议(NTP)
139—NetBIOS会话服务
143—网际报文存取协议 IMAP
161—SNMP消息-简单网络管理协议(SNMP)
二,不同操作系统换行符的差异
- windows采用回车+换行(CR+LG)表示下一行(亦即所谓的PC格式),每行的结尾是“<回车><换行>”,即“\r\n”;
- UNIX采用换行符(LF)表示下一行。每行的结尾是“<换行>”,即“\n”;
- MAC机采用回车符(CR)表示下一行。每行的结尾是“<回车>”,即“\r”;
计算机网络 - 应用层(学习日志)相关推荐
- 河南城建计算机网络试卷,河南城建计算机网络技术学习心得体会.docx
河南城建计算机网络技术学习心得体会 河南城建计算机网络技术学习心得体会 计算机网络技术学习心得体会 众所周知,21世纪是一个信息经济时代.为适应时代的发展,作为一名即将走出校园参加工作的当代大学生,所 ...
- 【计算机网络】学习笔记
[计算机网络]学习笔记 1. 概论 因特网中的服务 计算机网络特点 计算机网络功能 计算机网络的分类 2. 性能指标 体系结构 ISO/OSI参考模型 3. 物理层 传输媒体 物理层的功能 调制 码元 ...
- Python学习日志16 - 数据库SQL查询
Python学习日志 RBHGO的主页欢迎关注 温馨提示:创作不易,如有转载,注明出处,感谢配合~ 目录 文章目录 Python学习日志 目录 Python学习日志16课 - 数据库SQL查询 DQL ...
- 计算机网络网桥思维导图,《王道计算机网络》学习笔记总目录+思维导图
0.思维导图 本篇文章是对<2021王道计算机网络>所有知识点的笔记总结归档 虽说是2021年的 但是这些都是最核心的底层基础知识 过多少年都不会有很大的变化 核心都差不多.欢迎大家关注我 ...
- 物联网(loT) 学习日志
物联网(loT) 学习日志 2020.06.20 19:37 一.物联网(loT) 的技术架构 loT(Internet of things)的技术架构一般有:两方通信架构,三方通信架构,四方通信架构 ...
- 计算机网络自顶向下学习笔记
计算机网络自顶向下学习笔记 第一章.计算机网络和因特网 1.1什么是因特网 1.1.1具体构成描述 1.1.2服务描述 1.1.3协议 1.2网络边缘 1.2.1接入网 1.2.2 物理媒体 1.3 ...
- 计算机网络协议学习笔记
title: "计算机网络协议学习笔记" url: "https://wsk1103.github.io/" tags: 学习笔记 OSI模型 开放式系统互联通 ...
- 计算机网络--应用层Web简单介绍
计算机网络养成:第六天 内容导航 计算机网络养成:第六天 学习内容 Web and HTTP URL (Uniform Resource Locator)统一资源定位符 HTTP概况[hype tex ...
- 从零开始的Linux学习日志(4)
从零开始的Linux学习日志(4) 用户身份与能力 1.UID 2.GID和Groups 3.添加新用户useradd 4.添加新的用户组groupadd 5.修改用户属性usermod 6.修改用户 ...
最新文章
- 下列关于python字典变量的定义中错误的是_python练习题-day14
- 中班音乐 机器人教案_幼儿园中班音乐活动教案《机器人》
- error C2873: “Matrix2r”: 符号不能用在 using 声明中
- 蓝桥杯日期计算java_日期类的使用(java)-蓝桥杯
- JavaScript变量——栈内存or堆内存
- pytorch保存模型pth_Day159:模型的保存与加载
- P6 计算机系统的层次结构
- boost::remove_copy相关的测试程序
- kernel和filter这两个概念在CNN中的区别以及卷积核与卷积层的关系
- css动画(transition/transform/animation)
- 从5个函数带你理解K8s DeltaFIFO
- 操作系统(5) 并发控制(1)线程的互斥
- python123平台在线编程_Python程序设计实验报告一:熟悉IDLE和在线编程平台
- jfreechart火速应用
- 各类免费的的机器人仿真软件优缺点汇总
- 高中计算机选修1,高中信息技术_算法与程序设计(第一章)课件_粤教版选修1
- VC++_2010_学习版_未能下载以下组件解决方案和microsoft应用程序错误报告
- iOS屏幕旋转与锁屏
- Android Studio报错Error:java.lang.RuntimeException: Crunching Cruncher xx.png failed, see logs
- Python+Turtle 魔法阵效果(简陋)