TCP/IP协议体系

一、OSI模型

1、OSI七层模型、

 (1)各层结构说明

数据链路层、网络层(IP)、链路层(tcp、udp)处于内核态
应用层(DNS、ftp、https协议)处于用户区

应用层(数据):确定进程之间通信的性质以满足用户需要以及提供网络与用户应用(文件传输、电子邮件、文件服务、虚拟终端)
表示层(数据):主要解决用户信息的语法表示问题,如加密解密(数据格式化、代码转化、数据加密)
会话层(数据):提供包括访问验证和会话管理在内的建立和维护应用之间通信的机制,如服务器验证用户登录便是由会话层完成的(解除或建立与其他接点的联系)
传输层(段):实现网络中不同主机上用户进程之间的数据通信,可靠与不可靠的传输,传输层的错误检测,流量控制(提供端对端的接口)
网络层(包):提供逻辑地址(IP)、选路、数据从源端到目的端的传输(为数据包选择路由)
数据链路层(帧):将上层数据封装成帧,用MAC地址访问媒介,错误检测与修正(传输有地址的帧以及错误检测功能)
物理层(比特流):设备之间的比特流的传输,物理接口,电气特性等(以二进制数据形式在物理媒体上传输数据)

(2)设备应用

网关:应用层、传输层
(网关在传输层上以四线网络互连,是最复杂的网络互连设备,仅用于两个高层协议不同的网络互连。网关的结构也和路由器类似,不同的是互连层。网关既可以用于广域网,也可以用于局域网互连)

路由器:网络层
(路由选择,存储转发)

交换机:数据链路层、网络层
(识别数据包中的MAC地址信息,根据MAC地址进行转发,并将这些MAC地址与对应的端口记录在自己内部的一个地址表中)

网桥:数据链路层
(将两个LAN连起来,根据MAC地址转发帧)

集线器(Hub):物理层
(纯硬件设备,主要用来连接计算机等网络终端)

中继器::物理层
(在比特级别对网络信号进行再生和重定时,从而使得他们能够在网络上传输更长的距离)

2、五层协议体系结构、

二、TCP/IP 协议体系

1、采用4层结构,应用层、传输层、网络层、数据链路层

 每层调用下层所提供的协议以完成需求;

数据链路层:
(1)ARP(地址解析协议):它实现IP地址到物理地址(通常是MAC地址,通俗的理解就是网卡地址)的转换。
     应用:网络层使用IP地址寻找一台机器,而数据链路层则是使用物理地址寻找一台机器,因此网络层必须先将目标机器的IP地址转化成物理地址,才能使用数据链路层提供的服务。 (
2)RARP(逆地址解析协议):顾名思义,它和ARP是相反的,它是实现从物理地址到IP地址的转换
     应用:RARP协议仅用于网络上的某些无盘工作站,因为缺少储存设备,无盘工作站无法记录自己的IP地址,然而通过RARP就可以看到从物理地址到IP地址的映射。
网络层:
(1)IP
(2)ICMP:主要用于检测网络连接

    8位类型:将ICMP报文分为两大类:一类是差错报文,比如目标不可达(类型值为3)和重定向(类型值为5);另一类是查询报文,用来查询网络信息。

    有的ICMP报文还用8位代码字段细分不同的条件。比如代码值0表示网络重定向,代码值1表示主机重定向。

    16位校验和:对整个报文(包括头部和内容部分)进行循环冗余校验(CRC)。

    注意:ICMP协议并非严格意义上的网络层协议,因为它使用了处于同一层的IP协议提供的服务,而一般来说,上层协议使用下层协议提供的服务。

 传输层:

 (1)TCP协议(传输控制协议):为应用层提供可靠的、面向连接和流式服务

 (2)UDP协议(用户数据报协议):为应用层提供不可靠的、无连接的和数据报服务

 (3)SCTP协议(流控制传输协议):传输电话信号

  

 应用层:

(1)OSPF(开放最短路径优先)协议:是一种动态路由更新协议,用于路由器之间的通信,以告知对方各自的路由信息。

(2)DNS(域名服务)协议:提供机器域名到IP地址的转换。(如将www.baidu.com转化成百度的IP,输入域名就直接可以进入。因为IP地址记的时候太麻烦,就像每个人都是由身份证唯一标识的,但为了好记就起了名字。DNS就是一个将姓名与身份证对应的过程)

(3)telnet协议是一种远程登陆协议,使我们能在本地完成远程任务。

(4)HTTP协议(超文本传输协议)是一个基于请求与响应模式的、无状态的、应用层的协议,常基于TCP的连接方式。

(5)TFTP协议

(6)SNMP协议

(7)SMTP协议

2、tcp协议和udp协议的差别

TCP传输控制协议 。UDP用户数据报协议
TCP对资源要求比较多,UDP对资源要求比较少
TCP可以保证数据的正确性,UDP有可能会丢包
TCP可以保证数据的顺序,UDP不会保证

 3、TCP三次握手 < 请求--->应答--->确认 >

位码即TCP标志位6种:SYN建立连接的标志位,ACK确认位,PSH传送,FIN结束关闭连接,RST重置位,URG紧急位;seq起始序号,ack确认号;

第一次握手:TCP客户机进程首先向 TCP服务机进程发送一个TCP报文段,其报文段首部中的标志位SYN=1(标志),起始序号seq=x,该报文段称为SYN报文段,它封装在一个IP数据包中发送给服务器;

第二次握手:TCP SYN报文段到达服务机后,SYN和ACK均为1,确认号ack=x+1,服务机令自己的起始序号seq=y,此时称为SYNACK报文段发送给客户机;

第三次握手:收到SYNACK报文后,向服务机发送第三个报文段,对服务机允许连接的报文段进行确认,该报文段确认号ack=y+1,起始序号seq=x+1,发送完毕后,客户机和服务机都进入ESTABLISHED状态,完成三次握手,开始传送数据。

4、四次挥手

1)客户端进程发出连接释放报文,并且停止发送数据。释放数据报文首部,FIN=1,其序列号为seq=u(等于前面已经传送过来的数据的最后一个字节的序号加1),此时,客户端进入FIN-WAIT-1(终止等待1)状态。 TCP规定,FIN报文段即使不携带数据,也要消耗一个序号。
2)服务器收到连接释放报文,发出确认报文,ACK=1,ack=u+1,并且带上自己的序列号seq=v,此时,服务端就进入了CLOSE-WAIT(关闭等待)状态。TCP服务器通知高层的应用进程,客户端向服务器的方向就释放了,这时候处于半关闭状态,即客户端已经没有数据要发送了,但是服务器若发送数据,客户端依然要接受。这个状态还要持续一段时间,也就是整个CLOSE-WAIT状态持续的时间。
3)客户端收到服务器的确认请求后,此时,客户端就进入FIN-WAIT-2(终止等待2)状态,等待服务器发送连接释放报文(在这之前还需要接受服务器发送的最后的数据)。
4)服务器将最后的数据发送完毕后,就向客户端发送连接释放报文,FIN=1,ack=u+1,由于在半关闭状态,服务器很可能又发送了一些数据,假定此时的序列号为seq=w,此时,服务器就进入了LAST-ACK(最后确认)状态,等待客户端的确认。
5)客户端收到服务器的连接释放报文后,必须发出确认,ACK=1,ack=w+1,而自己的序列号是seq=u+1,此时,客户端就进入了TIME-WAIT(时间等待)状态。注意此时TCP连接还没有释放,必须经过2∗∗MSL(最长报文段寿命)的时间后,当客户端撤销相应的TCB后,才进入CLOSED状态。
6)服务器只要收到了客户端发出的确认,立即进入CLOSED状态。同样,撤销TCB后,就结束了这次的TCP连接。可以看到,服务器结束TCP连接的时间要比客户端早一些。

 5、TCP/IP实现可靠传输的方式

1、序列号,ACK信号:发送方给每个要发送的数据包都标有一个序列号。接受方在接收到数据包后,给发送送发送一个ACK信号包含了,要求的下一个数据包的序列号。
2、超时重发:当发送方在规定时间内没有接收到接收方的ACK时,将会重发送该数据包,并下一次等待重发的时间成指数增长。当重发一定次数后,若还没有收到ACK,就会强制的断开连接。
3、TCP的连接管理:三次握手,四次挥手。
4、以段为单位发送数据包:在通信双方建立连接的同时,协商数据包的单位即(最大的消息长度(MSS))。
5、滑动窗口:包括前端已发送未收到ACK的数据包,和后端待发送的数据包。接收端收到ACK后,窗口向前滑动,直到有数据未确认时停止。
6、流量控制:TCP数据报首部字段来控制滑动窗口的大小。
7、拥塞控制:发送端通过拥塞窗口主动控制数据流量。 慢启动:防止通信双方一开始就发送大量的数据包,拥塞窗口一开始的大小为:1MSS,每收到一个ACK拥塞窗口就扩大两倍,发送数据包时选择拥塞窗口和滑动窗口的较小值。拥塞避免算法:相比慢启动,拥塞窗口的增长速度更慢。快速重传:当在规定时间限度内没有收到ACK,那么很可能就是网络出现问题。此时将拥塞窗口减小为一,重新慢开始。
原文地址:https://www.cnblogs.com/yfacesclub/p/12732197.html