计算机网络

什么是TCP/IP

TCP/IP协议族

在互联网使用的各种协中最重要和最著名的就是 TCP/IP 两个协议。现在人们经常提到的TCP/IP并不一定单指TCP和IP这两个具体的协议,而往往表示互联网所使用的整个TCP/IP协议族。

  • 应用协议:TCP/IP体系中的应用层协议,主要包括HTTP(超文本传输协议)、SMTP(简单邮件传送协议)、FTP(文件传输协议)、TELNET(远程登录协议)、SNMP(简单网络管理协议)。

  • 传输协议:TCP/IP体系中的传输层协议,主要包括TCP(传输控制协议)、UDP(用户数据报协议)。

  • 网际互联协议:TCP/IP体系中的网络层协议,主要包括IP(Internet协议)、ARP(地址解析协议)、RARP(逆地址解析协议)、ICMP(因特网控制报文协议)、IGMP(因特网组管理协议)。

  • 路由控制协议:TCP/IP体系中的链路层协议,分为内部网关协议和域间路由协议。内部网关协议包括RIP(路由信息协议)、IGRP(内部网关路由协议)、EIGRP(增强内部网关路由协议)、OSPF(开放式最短路径优先协议)、IS-IS(中间系统到中间系统路由协议)。域间路由协议包括BGP(边界网关协议)。

TCP/IP四层模型

在这里插入图片描述

  • 应用层:为文件传输,为网络排错和Internet操作提供具体的程序应用

  • 传输层:为网络提供了流量控制,错误控制和确认服务。传输层有两个互不相同的传输协议:TCP(传输控制协议)、UDP(用户数据报协议)

  • 网络层:提供了独立于硬件的逻辑寻址,实现物理地址和逻辑地址的转换。网络层协议包括IP协议(网际协议),ICMP协议(互联网控制报文协议),IGMP协议(Internet组协议管理)

  • 网络接口层:主要是指一些物理层层次的接口,也称数据链路层,通常包括网络接口卡及设备驱动,之所以没有定义数据链路层,是因为TCP/IP 最初设计中已经考虑到多种数据链路层协议。

学习计算机网络时我们一般采用折中的办法,也就是中和 OSI 和 TCP/IP 的优点,采用一种只有五层协议的体系结构(应用层、传输层、网络层、 数据链路层、物理层),这样既简洁又能将概念阐述清楚。

基本工作原理

当你输入一个网址并按下回车键的时候,首先,应用层协议对该请求包做了格式定义;紧接着传输层协议加上了双方的端口号,确认了双方通信的应用程序;然后网络协议加上了双方的IP地址,确认了双方的网络位置;最后链路层协议加上了双方的MAC地址,确认了双方的物理位置,同时将数据进行分组,形成数据帧,采用广播方式,通过传输介质发送给对方主机。而对于不同网段,该数据包首先会转发给网关路由器,经过多次转发后,最终被发送到目标主机。目标机接收到数据包后,采用对应的协议,对帧数据进行组装,然后再通过一层一层的协议进行解析,最终被应用层的协议解析并交给服务器处理。

TCP/IP协议族中各协议之间的关系

在这里插入图片描述
各种应用进程就是通过不同的应用层协议来使用网络所提供的服务。例如,实现文件传输协议的FTP应用进程可以为用户提供计算机之间的文件传输服务,实现超文本传输协议的HTTP应用进程可以为用户提供浏览Web网页的功能等。

TCP和UDP是两个传输层协议。一般地,应用进程可以选择使用TCP或者UDP协议。如果应用层协议要求传输层提供可靠的服务,则应该选择TCP协议(打电话);如果应用层协议要求较高的数据传输速率,但是可以容忍一定的数据丢失,则可以选择UDP协议(直播)。TCP协议的数据单元称为TCP报文段或简称TCP段(TCPsegment),UDP协议的数据单元称为UDP数据报(UDPdatagram)。

IP协议是网际层上的一个主要协议。TCP和UDP协议都可以直接使用IP协议所提供的服务。IP协议的数据传送单位称为IP数据报或IP分组。TCP报文段或UDP数据报都可以封装在IP数据报中,以便在互联网上传输。除IP协议外,网际层还有其他协议,例如ICMP协议用于报告差错和其他重要信息;IGMP是多播组管理协议,是一个与多播有关的协议;ARP(地址解析协议)和RARP(逆向地址解析协议)用于提供IP地址与物理地址的映射关系。

封装和拆封

源主机封包:在这里插入图片描述

  1. 应用层:源主机将数据向下传输给传输层;
  2. 传输层:将数据分组,加上TCP首部形成TCP数据段,向下传输给网络层;
  3. 网络层:给TCP数据段加上源主机、目的主机IP首部,生成IP数据包,向下传输给链路层;
  4. 链路层:链路层在其MAC帧的数据部分装上IP数据包,再加上源主机,目的主机的MAC地址和帧头,并根据其目的的MAC地址,将MAC帧发往目的主机或IP路由器;

目标主机拆包:
在这里插入图片描述

  1. 链路层:在目的主机,链路层将MAC帧的帧头去掉,并将IP数据包向上传递给网络层;

  2. 网路层:检查IP报头,如果报头中校验和计算结果不一致,则丢弃该IP数据包,若校验和计算结果一致,则去掉IP报头,将TCP数据段向上传递给传输层;

  3. 传输层:检查顺序号,判断是否是正确的TCP分组,然后检查TCP报头数据,若正确,则向源主机发送确认信息,若不正确或丢包,则向源主机要求重发信息;

  4. 应用层:目的主机,传输层去掉TCP报头,将排好顺序的分组组成应用数据流送给应用程序,这样目的主机接收到的来自源主机的字节流,就像是直接接收来自源主机的字节流一样。

  1. TCP和UDP都使用一个16位的端口号来标识不同的应用程序。
  2. TCP、UDP、ICMP和IGMP等协议都要使用IP数据报传送数据,所以在IP数据报的首部定义一个8位的“协议”宇段,以说明是哪个协议的数据封装到了IP数据报中。协议宇段的值为1表示ICMP,为2表示IGMP,为6表示TCP,为17表示UDP。
  3. 太网帧首部定义了一个16位的“类型”字段,用来说明是哪个协议(ARP,RARP,IP)的数据

总结:数据在每层有不同的格式,从上到下依次叫数据段,数据包,数据帧,数据从应用层通过协议栈向下传递,每经过一层加上对应层协议报头,最后封装成"数据帧"发送到传输介质上,到达路由器或者目的主机去掉头部,交付给上层需要者。这一过程称为封装,传输,分离,分用。

数据段:TCP 数据流中的信息;
数据包:IP 和 UDP 等网络层以上的分层中包的单位;
数据帧:数据链路层中包的单位;

1. 应用层

应用层(application-layer)的任务是通过应用进程间的交互来完成特定网络应用。应用层协议定义的是应用进程间通信交互的规则。对于不同的网络应用需要不同的应用层协议。在互联网中应用层协议很多,如域名系统DNS,支持万维网应用的 HTTP协议,支持电子邮件的 SMTP协议等等。我们把应用层交互的数据单元称为报文。
传输层及以下层提供了完整的通信服务, 应用层是面向用户的一层

DNS(基于UDP协议)

域名系统(Domain Name System缩写 DNS,DomainName被译为域名)将域名和IP地址相互映射一个分布式数据库,能够使人更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。

域名组织形式

DNS名称 说明 示例
根域 根服务器主要用来管理互联网的主目录
顶级域 用于指定某个国家/地区/组织使用的类型名称 .cn (中国)/ .com(企业)
第二层域 个人或组织在Internet上使用的注册名称 taobao.com
子域 已注册的二级域名的派生域名,也就是网站名 www.taobao.com
主机名 DNS左侧的标签位标识了网络上的特定计算机 h1.www.taobao.com

DNS解析过程
浏览器缓存—>本地缓存—>本地域名服务器—>主域名服务器—>根域名服务器

  1. 请求发出后先检查自身的浏览器缓存,如过有缓存过此域名对应的IP地址,则解析结束。

  2. 如果浏览器缓存没有命中,则去查看操作系统缓存中有没有对应解析的结果。(windows操作系统可以通过C盘中的hosts去设置操作系统缓存。目前操作系统为防止被操作系统缓存被篡改从而导致域名劫持,将hosts文件改为read-only。)

  3. 如果浏览器和操作系统缓存都没命中,则去请求本地域名服务器(LDNS)。此DNS服务器其实就是我们在配置网络设置时候的配置的DNS服务器,大部分的IP都会被缓存在这个DNS中。

  4. 若LDNS未命中,则去请求根域名服务器(Root Server) 。

  5. 根域名服务器返回给LDNS一个所查询域的主域名服务器(gTLD Server,国际顶尖域名服务器,如.com .cn .org等)地址.

  6. 此时LDNS再发送请求给上一步返回的gTLD.

  7. 接受请求的gTLD查找并返回这个域名对应的Name Server的地址,这个Name Server就是网站注册的域名服务器。

  8. Name Server根据映射关系表找到目标ip,返回给LDNS。

  9. LDNS缓存这个域名和对应的ip。

  10. LDNS把解析的结果返回给用户,用户根据TTL值缓存到本地系统缓存中,域名解析过程至此结束

DHCP协议(基于UDP协议)

DHCP(Dynamic Host Configuration Protocol):动态主机配置协议,是一个局域网的网络协议;基于CS模型

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值