计算机网络-OSI模型与TCP/IP模型(IP、TCP、DNS协议)

OSI模型与TCP/IP模型参考
IP协议
TCP协议
DNS协议

OSI参考模型和TCP/IP参考模型:

OSI参考模型

OSI参考模型相关的协议没有被任何人利用,但是,模型本身具有相当普遍的意义,并仍然有效,它对讨论网络体系结构中每一层的功能很重要;TCP/IP协议模型具有相反的特性,模型本身并没有多大用处,但是协议却广为流传;
1、OSI模型:该模型基于国际标准化组织ISO,七层,从上到下为:
图片有点丑,凑合能看
计算机网络-OSI模型与TCP/IP模型(IP、TCP、DNS协议)
计算机网络-OSI模型与TCP/IP模型(IP、TCP、DNS协议)

TCP/IP参考模型:

TCP/IP使用数据包交换网络,tcp/ip四层模型和相关协议:TCP/IP相对于OSI模型少了表示层和会话层;

计算机网络-OSI模型与TCP/IP模型(IP、TCP、DNS协议)

TCP/IP各层内容

1、链路层link layer:
本模型使用数据包交换网络,他以一个运存在不同网络之上的无连接网络层为基础,该层描述了链路必须完成什么功能才能满足无连接的互联网络层的需求,比如串行线和经典的以太网链路,这不是真正意义上的层,而是主机和传输线路之间的一个接口;用来处理连接网络的硬件部分,包括操作系统、硬件的设备驱动、NIC(网络适配器即网卡),以及光纤等物理可见部分(还包括连接器等一切传输媒介),硬件上的范畴均在链路层的作用范围之内

2、互联网层(网络层)Internet layer:
是将整个网络体系结构贯穿在一起的关键层,大致对应于OSI模型的网络层,该层的任务是允许主机将数据包注入任何网络,并且让这些数据包独立的到达接收方(接收方可能在不同的网络上),甚至数据包的到达顺序和发送顺序都不一致,这种情况下,如果需要按序递交数据,那么重新排列这些数据包的任务由高层完成;
互联网层定义了官方的数据包格式和协议,该协议称为因特网协议IP Internet Protocol ,与之相伴的还有一个辅助协议,因特网控制报文协议Internet Control Message Protocol,ICMP;互联网层的任务就是将IP分组投递到他们该去 的地方,这里主要的问题就是数据包的路由,同时该层还要考虑拥塞控制问题(尽管没有证据表明IP能有效避免拥塞);

3、传输层transport layer:
在TCP/IP模型中位于互联网层之上的那一层通常称为传输层。他的设计目标是允许源主机和目标主机上的对等实体进行对话,犹如OSI的传输层,这里定义了两个端到端的传输协议,

第一个是传输控制协议:TCP transport control protocol,他是一个可靠的、面向连接的协议,允许从一台机器发出的字节流正确的交付到互联网上的另一台机器,他把传输的字节流分割成离散的报文,并把每个报文传递给互联网层;在目标机器,接受TCP进程把接受到的报文重新分配到输出流中,TCP还负责处理流量控制,以便确保一个快速的发送方不会因为发送太多报文而湮没一个处理速度较慢的接收方;

第二个协议为用户数据报协议UDP User Datagram Protocol,他是一个不可靠的、无连接协议,适用于那些不想要TCP的有序性或流量控制功能,而宁可自己提供这些功能的应用程序。UDP被广泛应用于一次性的基于客户机-服务器类型的“请求-应答”查询应用,以及那些及时交付比精确交付更重要的应用,比如传输语音或者视频。

4、应用层:
TCP/IP模型并没有会话层和表示层,因为当时感觉并不需要这两层,相反,应用层简单包含了所需要的任何会话和表示功能。来自OSI模型的经验已经证明:对于大多数应用来说,这两层并没有什么卵用;在传输层之上是应用层,application layer 它包含了所有的高层协议,
最早的高层协议包括虚拟终端协议Telnet、文件传输协议ftp、邮件协议SMTP等,后来发展又加入了很多,其中将主机名字映射到他们网络地址的域名系统DNS Domain Name System,用于获取万维网页面的超文本传输协议http,用于传送诸如语音或者电影等实时媒体的RTP等;

根据学校使用计算机网络教材,TCP/IP协议使用了五层,最下边还有物理层,从物理层往上穿过数据链路层、网络层和传输层到达应用层。

物理层规定了如何在不同介质上以电气(或其他模拟信号)传出比特;

链路层关注的是如何在两台直接相连的计算机之间发送有限长度的消息,并且具有指定级别的可靠性,以太网和802.11就是链路层协议的例子;

网络层主要处理如何把多条链路结合到网络中,以及如何把网络与网络连接成互联网络,以便我们可以在两个相隔遥远的计算机之间发送数据包,网络层的任务包括找到传递数据包所走的路径;IP就是网络层主要协议;

传输层:增强了网络层的传递保证,通常具有更高的可靠性,而且提供了数据交付的抽象,比如满组不同应用需求的可靠字节流,TCP是传输协议的一个重要实例;

最后,应用层包含了使用网络的应用程序,我们关心的就是程序中使用网络的那部分,web浏览器就是http协议,应用层也有重要的支撑程序供其他应用程序使用,比如DNS;

传输层和网络层构成了网络协议层次的核心,网络层使用数据报或虚电路技术为端到端通信提供了数据包交付服务;传输层架构在网络层提供的服务之上,把数据传递服务从两台计算机之间扩展到两台计算机的进程之间,并且服务所需要的可靠性程度独立于当前使用的物理网络;

与http关系密切的协议:IP、TCP、DNS

IP协议

IP协议的作用在意把各种数据包准确无误的传送给对方,其中两个重要条件是IP地址、Mac地址,IP地址是稀缺资源,不可能每个人分配一个,所以我们通常的IP地址是路由器生成的IP地址,路由器里面会记录我们的Mac地址,而Mac地址是全球唯一的,出去人为因素不可能重复,(Mac地址媒体访问控制,或称为物理地址、硬件地址,用来定义网络设备的位置。
在OSI模型中,第三层网络层负责 IP地址,第二层数据链路层则负责 MAC地址。因此一个主机会有一个MAC地址,而每个网络位置会有一个专属于它的IP地址。MAC地址是网卡决定的,是固定的,长度是48比特,6个字节,都由16进制数字,分前24位和后24位,区分了不同厂家,
前24位叫做组织唯一标志符(Organizationally Unique Identifier,即OUI),是由IEEE的注册管理机构给不同厂家分配的代码,区分了不同的厂家。后24位是由厂家自己分配的,称为扩展标识符。同一个厂家生产的网卡中MAC地址后24位是不同的)

使用ARP协议凭借Mac地址进行通信:IP间通信依赖Mac地址,在网络上,通信双方在同一个局域网LAN的情况是很少见的,通常要经过多台计算机和网络设备中转,而在进行中转时,会利用下一站中转设备的Mac地址来搜索下一个中转目标,这时,会采用ARP协议,ARP协议是一种用以解析地址的协议,根据通信双方的IP地址就可以反查出对应的Mac地址;

ARP协议地址解析协议:

OSI模型把网络工作分为七层,IP地址在OSI模型的第三层,MAC地址在第二层,彼此不直接打交道。在通过以太网发送IP数据包时,需要先封装第三层(32位IP地址)、第二层(48位MAC地址)的报头,但由于发送时只知道目标IP地址,不知道其MAC地址,又不能跨第二、三层,所以需要使用地址解析协议。使用地址解析协议,可根据网络层IP数据包包头中的IP地址信息解析出目标硬件地址(MAC地址)信息,以保证通信的顺利进行;
ARP是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,
以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。
地址解析协议是建立在网络中各个主机互相信任的基础上的,网络上的主机可以自主发送ARP应答消息,其他主机收到应答报文时不会检测该报文的真实性
就会将其记入本机ARP缓存;由此攻击者就可以向某一主机发送伪ARP应答报文,使其发送的信息无法到达预期的主机或到达错误的主机,这就构成了一个ARP欺骗。
ARP命令可用于查询本机ARP缓存中IP地址和MAC地址的对应关系、添加或删除静态对应关系等。相关协议有RARP、代理ARP。NDP用于在IPv6中代替地址解析协议。

TCP协议

如果IP协议是找到对方的详细地址,那么TCP协议就是把数据安全的送给对方;按照层次,TCP属于传输层,提供可靠的字节流服务,也就是信息切割包装,然后送到对方手里再组装;(字节流服务:为了方便传输,将大块数据分割成以报文段segment为单位的数据包进行管理),而可靠的传输服务是指,能够把数据准确可靠的传给对方,也就是说,TCP为了更容易传送大数据才把数据分割,并且能确认数据是否送达对方;

DNS协议

域名系统(英文:Domain Name System,缩写:DNS)是因特网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网。DNS 使用TCP和UDP端口53。

DNS服务实现

首先我们的电脑里面都会有一个DNS服务器(Name Server)的IP地址,可以手动设置也可以自动获取,有名的DNS服务器包括google的8.8.8.8 阿里巴巴的223.5.5.5等,查看自己电脑的DNS服务器的IP地址可以在windows命令行下输入ipconfig /all,在linux下面则通过more /etc/resolv.conf查看。
例子:
客户端发起访问请求www.baidu.com:

1.查看本地hosts文件,发现没有www.baidu.com IP 映射关系,将请求发送给本地DNS服务器(递归查询)
2.本地DNS服务器不包含baidu.com的权威域,不存在对应的www记录,因此将请求转发到根域名服务器(假如 a.root-servers.net.)
3.根域名DNS服务器会返回负责.com域解析的服务器(假如 a.gtld-servers.net.)给本地DNS服务器,本地DNS服务器再将请求发送给 a.gtld-servers.net
4..com域名服务器只能返回负责baidu.com域的解析服务器(如 ns1.nease.net.)给本地DNS服务器,本地DNS服务器再将请求发送给ns1.nease.net.
5.由ns1.nease.net.域名服务器返回www.baidu.com 的 IP映射关系给本地DNS服务器;2-5过程迭代查询
6.本地DNS服务器将结果保存到本地缓存,并保持TTL时间,同时将结果应答给客户端.
7.当其他客户端再次向本地DNS服务器查询www.baidu.com时,在TTL时间内,本地DNS服务器不再向根域名服务器转发请求,而是直接从缓存中读取数据应答给客户端. 如果已经超过TTL时间,则本地DNS服务器会再次经历一次上诉2-6的过程;

总结

计算机网络的TCP/IP协议这一块有很多东西要理解,这里只是简单介绍模型和协议,关于TCP/IP的三次握手和四次握手,还有TIME_WAIT,还有窗口等在另一文讨论。