美文网首页
TCPIP协议相关

TCPIP协议相关

作者: 植物大战代码 | 来源:发表于2020-07-28 17:06 被阅读0次

    网络结构

    1.OSI参考模型

    他是描述网络结构的七层模型,低三层是物理层、数据链路层、网络层,中间是传输层,高三层是会话层,表示层,应用层
    一是物理层
    数据最终是在物理层通过网络接口进行物理移动的层次,这层里处理的是实际的数字信号0-1的比特序列,负责的工作主要是硬件规格的参数定义,通信编码,实际的传输数据,硬件相关的网络设计比如拓扑结构等等,中继器,传统集线器都在物理层
    [中继器:将信号整形放大再转发,消除失真和衰弱
    集线器:是多端口的中继器,共享式设备,目的是扩大网络传输范围]

    二是数据链路层
    大多数局域网和无线局域网技术都是在这一层定义的,主要任务是
    逻辑链路控制LLC层(这个主要是向上面的网络层隐藏数据链路层的细节,通过标准协议允许不同的技术和高层无缝连接);
    媒体访问控制MAC层(这个主要是指定对传输媒介的规则,比如以太网的CSMA/CD方法进行介质访问的控制);
    其余就是封装成数据帧给物理层,这个帧还可以进行差错控制;
    还有MAC寻址
    相关设备有 网桥,交换机,桥路器

    三是网络层也就是IP层
    网络层定义了互联网络的功能,用较高的视角将网络通信远程化,对比来说数据链路层只是处理彼此相邻的本地设备
    网络层的工作主要包括:
    逻辑寻址,比如因特网上的网际协议也就是IP协议定义的IP地址
    选择报文传输的路径,
    进行数据报封装,对报文进行分片和重组以适应数据链路层的传输限制
    IP层的差错控制和诊断
    在TCP/IP中,IP是无连接的,而传输层的TCP是面向连接的
    [面向连接:建立逻辑连接,也就是定义建立连接,协商管理到结束的一系列规则
    无连接:不会制定规则,有数据就直接发送,不在意对方的状态]
    这一层主要是协议,包括IP协议,和IP一起的处理差错的ICMP协议等等
    这一层的设备是路由器,负责选路功能,利用路由算法选择发送的最佳路径

    四是运输层
    物理层处理比特,数据链路层处理本地网络,网络层处理网络选路,运输层提供控制端到端的传输,提供一种方法使不同的应用程序可以通过这个方法使用相同的底层协议来发送和接收数据。他的功能包括
    进程之间的寻址,例如TCP,UDP的端口机制,这也实现了多路复用和分解
    运输层对网络分片、打包和重组来满足网络层和数据链路层的要求
    还有就是我们熟悉的面向连接系列的连接建立、管理、终止规则,确认和重传的可靠机制,流量控制和拥塞控制等等

    五层是会话层
    主要提供会话的简历,管理和终止方法,会话的意思是应用程序进程间的持久性逻辑连接,会话层工具通过API等命令集提供给更高层,比如调用TCP/IP的套接字,设置他的状态,调用他的各个方法,而不在乎内部原理

    第六层表示层
    这一层处理数据的表示。
    比如数据在不同操作系统之间要进行转换,表示层就隐藏了机器之间的差异
    比如进行数据的压缩和加密,典型例子是安全套接层协议SSL

    第七层是应用层
    就是应用程序的所在,应用层提供了用户应用程序所使用的服务。
    比如网络浏览器就是利用应用层的协议所提供的HTTP协议,操作系统也是直接使用应用层服务
    [说说你知道哪些应用层协议:文件传输协议FTP,超文本传输协议HTTP,域名系统DNS,动态主机配置协议DHCP,电子邮件相关协议POP/IMAP/SMAP等等]
    应用层就是用户程序和网络的交界
    在TCP/IP模型中,上三层被统一称为应用层

    运输层(TCP/UDP)

    1.说说TCP和UDP的区别

    分为一下几个方面:
    特点
    TCP是面向连接的,可靠传输,数据以字节流的形式传输
    UDP是无连接的,不可靠传输,数据以完整数据报的形式传输
    应用场景:
    TCP因为他要保证可靠性所以他的首部特别的长,这就造成了他传输慢而且会有阻塞存在,但是在对要求可靠性高但是实时性不严格的情况下使用,比如文件传输、邮件传输等;
    相对UDP传输高效可以应用在实时性要求高的场合,比如语音电话和视频,然后如果想让UDP变得可靠,可以在应用层对他进行封装,使他可靠传输

    QQ:
    登陆采用TCP协议和HTTP协议,你和好友之间发送消息,主要采用UDP协议,内网传文件采用了P2P技术。总来的说:1.登陆过程,客户端client 采用TCP协议向服务器server发送信息,HTTP协议下载信息。登陆之后,会有一个TCP连接来保持在线状态。2.和好友发消息,客户端client采用UDP协议,但是需要通过服务器转发。腾讯为了确保传输消息的可靠,采用上层协议来保证可靠传输。如果消息发送失败,客户端会提示消息发送失败,并可重新发送。3.如果是在内网里面的两个客户端传文件,QQ采用的是P2P技术,不需要服务器中转.

    微信通讯中使用了HTTP短连接和TCP长连接,并没有用到UDP,其中登陆验证和头像身份信息及日志等功能采用的HTTP,文本消息、语音消息、视频消息、图片消息这些使用的是TCP长连接。通过心跳包来维护长连接状态,300S一个心跳。而语音和视频采取的是UDP

    ping 是应用层直接调用ip层的ICMP协议,icmp和ip同属网络层,位于tcp/udp之下,icmp就是internet控制报文协议,在ip数据报内部传输,此时ip数据报由ip首部和icmp报文组成

    2.TCP连接过程:三次握手和各阶段TCP所处的状态

    TCP连接的准备
    1.首先因为要独立地维护每一条连接的数据,TCP连接两端的每台设备创建一个单独的传输控制块TCB,来存储连接相关的套接字,变量,指针等,然后各自维护自己的TCB
    2.双方的IP地址和端口号唯一的标识一个连接和连接用的TCB

    TCP连接创建的过程:三次握手
    TCP双方通过报文交换完成从初始状态(closed)到正常操作状态(established)的转变
    1.主要完成三个任务:
    双方初步接触建立通信;进行序列号的同步;进行参数交换,比如最大段长度MSS,窗口扩展等选项字段的参数

    2.创建连接
    概念上来说是需要四次握手,但是中间的一个报文可以同时传到SYN和ACK的信息,所以只需三次握手
    a.客户机和服务器都处于closed状态,客户机什么都不做,服务机要执行一次被动打开,创建一个TCB,准备好接受连接SYN报文,这时服务端变为listen状态等待客户端
    b.客户端执行主动打开,创建TCB,发送一个SYN报文,发送以后他就是syn-sent状态;listen服务端接收到SYN报文后,向客户端发送一个SYN+ACK的报文,发送完转变为syn-received状态
    c...
    最终双方达到established状态进行数据的正常传输

    同时开始创建连接-两次握手
    TCP的内建规则允许这样做,两个客户机相连,双方都执行主动打开,然后用两组独立的syn和ack报文进行交换,相当于两组两次握手
    简单叙述,就是一台进行TCP连接的设备发送了一个SYN,并且在对方设备对他做出ACK之前就就收到了对方的SYN,于是两台设备进行了同时的连接建立
    最终两台设备都进入established状态,可以进行数据的正常传输

    连接过程中的序列号同步
    1.每台TCP设备都会在连接初始化的时候挑选一个32比特的初始序列号ISN,这是通过一个基于时间的计数器来实现的,计数器每四个微秒就会加1,直到位数超过32个比特,大约四个多小时候轮回一次。(这个方法的可预测性会被黑客攻击,所以经常采用随机数的方法)
    2.然后就在建立连接过程中,通过ACK,就是报文中的序列号和确认号字段的数字进行同步

    连接过程中的参数交换
    TCP报文的选项字段提供了多个参数的相互设置
    比如MSS,客户端发送的报文中带有MSS,服务端就会记下这个值,在后续发送的段都不会超过这个长度,
    还有窗口扩展字段,会是窗口字段设置为2的n次方,这个n就是窗口字段的数字,而实际设置是经过计算后的值

    3.TCP连接终止的过程:四次挥手和各阶段TCP所处的状态

    连接终止的实现需要每台设备单独的终止自己一端的连接,一台设备的主动关闭意味着他不会再发数据,但是还能接受数据

    正常的连接终止过程
    这是一对两次握手的过程
    a. established客户端主动断开连接,在数据报中将FIN置位,发完了就进入fin-wait1的状态,他还在正常滴收数据,但是不再接受应用程序发送数据;然后established服务端收到了FIN置位的报文段以后,发送一个ACK进行确认,发完了转入Close-wait状态,等待应用程序得到关闭的通知,这可以让应用程序完成正在进行的任务

    b.fin-wait1客户端收到了ACK确认以后,进入FIn-wait2的状态,等待服务器关闭的报文,同时再收数据;Close-wait的服务端被应用程序通知说任务完成,于是可以发送FIN报文段出去,发送完了他就变成了last-ack状态

    c.FIn-wait2的客户端收到FIn报文段以后,返回一个ACK,发完了他就进入了time-wait状态,这个time-wait状态将自行持续两倍最大段寿命MSL的时间,确保ACK被接收;在这期间,last-ack服务端了自己finish的ACK,关闭连接,直接变成closed状态

    d.time-wait状态的客户端在定时器超时以后,关闭连接,变为closed
    最终双方都变成closed状态

    为什么需要time-wait状态?
    1.足够的时候确保ack被对方收到,丢失了需要进行重传
    2.本次连接结束和后续连接之间需要缓冲时间,避免不同连接的分组混淆 ,会造成混乱
    最大短寿命MSL,在TCP标准中定义为120s的值,过长了,这个值tcp允许程序进行实现

    同时终止连接的情况
    意思是说客户端决定关闭发送了一个fin,但在收到ack之前就收到了服务器的fin
    配图吧!双方的状态差不多不相关,都是:
    established >(发送FIN)> fin-wait1 >(收到FIN,发送ACK)> closing >(收到ACK)> time-wait >(等待2MSL) > closed

    4.TCP的可靠传输由哪些方面保证

    校验和,序列号,确认号(他们两组成的滑动窗口确认系统),重传机制,有流量控制,拥塞控制

    5.介绍一下滑动窗口机制

    6.TCP的流量控制如何进行

    这是运输层的流量控制,控制的是从源端到目的端的流量,控制的是两端之间的发送和接收;而数据链路层的流量控制不同,是指相邻节点之间数据链路上的流量,

    7.TCP的拥塞控制如何进行

    笔记

    网络层(IP)

    路由算法

    1.路由信息协议RIP
    基于距离向量的路由选择协议,最大距离15

    2.开放最短路径优先协议OSPF
    构建链路全网状态数据库,就是一个全网拓扑结构图,在图中使用最短路径算法找到最短路径构造路由表,然后在链路状态改变的时候不断更新路由表,将一个自制系统划分为域,域内泛红

    3.边界网关协议BGP
    不同自制系统的路由交换

    相关文章

      网友评论

          本文标题:TCPIP协议相关

          本文链接:https://www.haomeiwen.com/subject/cggfrktx.html