借鉴于: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 工作过程如下:

  1. 客户端发送 Discover 报文,该报文的目的地址为 255.255.255.255:67,源地址为 0.0.0.0:68,被放入 UDP 中,该报文被广播到同一个子网的所有主机上。如果客户端和 DHCP 服务器不在同一个子网,就需要使用中继代理。
  2. DHCP 服务器收到 Discover 报文之后,发送 Offer 报文给客户端,该报文包含了客户端所需要的信息。因为客户端可能收到多个 DHCP 服务器提供的信息,因此客户端需要进行选择。
  3. 如果客户端选择了某个 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”;

计算机网络 - 应用层(学习日志)相关推荐

  1. 河南城建计算机网络试卷,河南城建计算机网络技术学习心得体会.docx

    河南城建计算机网络技术学习心得体会 河南城建计算机网络技术学习心得体会 计算机网络技术学习心得体会 众所周知,21世纪是一个信息经济时代.为适应时代的发展,作为一名即将走出校园参加工作的当代大学生,所 ...

  2. 【计算机网络】学习笔记

    [计算机网络]学习笔记 1. 概论 因特网中的服务 计算机网络特点 计算机网络功能 计算机网络的分类 2. 性能指标 体系结构 ISO/OSI参考模型 3. 物理层 传输媒体 物理层的功能 调制 码元 ...

  3. Python学习日志16 - 数据库SQL查询

    Python学习日志 RBHGO的主页欢迎关注 温馨提示:创作不易,如有转载,注明出处,感谢配合~ 目录 文章目录 Python学习日志 目录 Python学习日志16课 - 数据库SQL查询 DQL ...

  4. 计算机网络网桥思维导图,《王道计算机网络》学习笔记总目录+思维导图

    0.思维导图 本篇文章是对<2021王道计算机网络>所有知识点的笔记总结归档 虽说是2021年的 但是这些都是最核心的底层基础知识 过多少年都不会有很大的变化 核心都差不多.欢迎大家关注我 ...

  5. 物联网(loT) 学习日志

    物联网(loT) 学习日志 2020.06.20 19:37 一.物联网(loT) 的技术架构 loT(Internet of things)的技术架构一般有:两方通信架构,三方通信架构,四方通信架构 ...

  6. 计算机网络自顶向下学习笔记

    计算机网络自顶向下学习笔记 第一章.计算机网络和因特网 1.1什么是因特网 1.1.1具体构成描述 1.1.2服务描述 1.1.3协议 1.2网络边缘 1.2.1接入网 1.2.2 物理媒体 1.3 ...

  7. 计算机网络协议学习笔记

    title: "计算机网络协议学习笔记" url: "https://wsk1103.github.io/" tags: 学习笔记 OSI模型 开放式系统互联通 ...

  8. 计算机网络--应用层Web简单介绍

    计算机网络养成:第六天 内容导航 计算机网络养成:第六天 学习内容 Web and HTTP URL (Uniform Resource Locator)统一资源定位符 HTTP概况[hype tex ...

  9. 从零开始的Linux学习日志(4)

    从零开始的Linux学习日志(4) 用户身份与能力 1.UID 2.GID和Groups 3.添加新用户useradd 4.添加新的用户组groupadd 5.修改用户属性usermod 6.修改用户 ...

最新文章

  1. 下列关于python字典变量的定义中错误的是_python练习题-day14
  2. 中班音乐 机器人教案_幼儿园中班音乐活动教案《机器人》
  3. error C2873: “Matrix2r”: 符号不能用在 using 声明中
  4. 蓝桥杯日期计算java_日期类的使用(java)-蓝桥杯
  5. JavaScript变量——栈内存or堆内存
  6. pytorch保存模型pth_Day159:模型的保存与加载
  7. P6 计算机系统的层次结构
  8. boost::remove_copy相关的测试程序
  9. kernel和filter这两个概念在CNN中的区别以及卷积核与卷积层的关系
  10. css动画(transition/transform/animation)
  11. 从5个函数带你理解K8s DeltaFIFO
  12. 操作系统(5) 并发控制(1)线程的互斥
  13. python123平台在线编程_Python程序设计实验报告一:熟悉IDLE和在线编程平台
  14. jfreechart火速应用
  15. 各类免费的的机器人仿真软件优缺点汇总
  16. 高中计算机选修1,高中信息技术_算法与程序设计(第一章)课件_粤教版选修1
  17. VC++_2010_学习版_未能下载以下组件解决方案和microsoft应用程序错误报告
  18. iOS屏幕旋转与锁屏
  19. Android Studio报错Error:java.lang.RuntimeException: Crunching Cruncher xx.png failed, see logs
  20. Python+Turtle 魔法阵效果(简陋)

热门文章

  1. 「boomyao」的求职简历(web前端)
  2. NBIOT 移动M5310A模块 AT+MIPLCREATE注册码自动生成
  3. 做企业,要时刻居安思危
  4. 对数据采集工程师的一点理解
  5. ios和android手机测试,IOS和Android进行手机测试有哪些区别?
  6. 使用clumsy模拟网络延迟
  7. 解决Masonry 中equalTo和mas_equalTo 乱用的问题
  8. Flac3D常用命令部分
  9. 500vip网全套源码下载 带精美手机版源码
  10. Java毕设项目众筹平台网站计算机(附源码+系统+数据库+LW)