美文网首页
网络协议简单概述和TPC/IP协议概述以及TCP三次(四次)握手

网络协议简单概述和TPC/IP协议概述以及TCP三次(四次)握手

作者: 以南之南_b9a1 | 来源:发表于2018-05-18 16:29 被阅读0次

    1.OSI七层网络概述

    物理层:设备之间的数据通信提供传输媒体及互连设备,为数据传输提供可靠的 环境。可以理解为网络传输的物理媒体部分,比如网卡,网线等! 在这一层,数据还没有被组织,仅作为原始的位流或电气电压处理,这一层的单位是:bit比特

    数据链路层:可以理解我数据通道,主要是在不可靠物理链路上进行可靠的链路传递,该层的地址包括:物理地址寻址,流量控制,数据检错,以及重发,该层要为物理层提供终端连接媒体传输数据以及链接,该层的单位是:

    网络层:主要将网络地址翻译成物理地址,并决定将数据如何发送冲发送方到接受方,简单概述为:为网络接连提供上次服务,该层的设备:为路由,单位为:数据包,其中IP协议就在这一层

    传输层:向上层服务,提供通信服务,面向通信服务的最高层,所以该层的基本单位为数据段。而且这两层最重要的协议为:TCP传输控制协议UDP用户数据报协议

    会话层:负责两个节点之间的建立,维持,和终止通信

    表示层:来自应用层的数据和命令进行解释,对各种语法赋予相应的含义,传输到回话层,主要功能为:加密,解密,编码,压缩,解压缩

    应用层:简单说就是协调各个层之间的工作,负责网络中的应用服务和操作系统之间的联系

    面试官,经常会问,网络协议有几层啊?TCP和UDP协议位于那一层。。Socket是什么鬼? 分哪几种..等等。。都会在下文中讲到

    2.TCP/IP 四层模型

    TCP/IP四层模型

    应用层:应用之间进行简单沟通的层

    传输层:负责传送数据,并且确定数据已经被送达或接受

    网络互连层:进行提供基本的数据进行封包,让每一个数据包都能到达主机

    主机到网络层:对实际网络媒体的管理

    3.TCP/IP地址详解

    IP地址:为了实现网络之间不同的终端进行通讯,每个终端需要一个唯一标识------> ip地址

    首先TCP/IP是一个协议簇,UDP只是其中的一个,因为在该簇中TCP/IP比较重要,所以就用他们命名了

    TCP的三次(四次握手)

    TCP的三次握手

    第一次握手:客户端将SYN置为1,随机产生一个值seq=J ,并将该数据包发送给Server,此时,客户端状态为SYN_SENT.

    第二次握手:服务端接受到SYN=1知道客户端简历链接,服务端将SYN=1和ACK=1都置为1,ack=J+1,然后随机生成一个数seq=k,返回给客户端已确认链接,此时服务端进行SYN_RCVD 。

    第三次握手:客户端确认链接后,检查ack是否等于J+1,ACK是否为1,如果正确将ACK置为1,ack=k=1,并且将该数据包发送给server服务端,服务端检查ack是否等于1,如果正确,则建立链接成功,此时服务端和客户端进入ESTABLISHED状态。完成第三次握手,此时client和Server可以进行正常通信

    四次握手:终止TCP链接,就是指 断开一个TCP链接时,需要客户端和服务端总共发送4个包以确认连接的断开。断开链接这个过程有服务端或者客户端执行close来出发。

    TCP关闭链接

    第一次挥手:Client发送一个FIN,用来关闭Client到Server的数据传送,Client进入 FIN_WAIT_1状态

    第二次挥手:Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1(与SYN相同, 一个FIN占用一个序号),Server进入CLOSE_WAIT状态。

    第三次挥手:Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK 状态。

    第四次挥手:Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,Server进入CLOSED状态,完成四次挥手。 另外也可能是同事发起主动关闭的情况。

    还有一常见的问题是:为什么链接时是三次握手,关闭链接时四次握手?

    因为服务端一直为LISTEN状态下。当接受客户端的链接请求的报文SYN后,将ACK和SYN放在一个报文里返回给服务端,而关闭时,当前服务端接受到FIN报文后,仅仅表示对方不在发送报文,但是能接受报文,己方也未必全部数据都发送给对方了,再发FIN报文来同意关闭链接,因此己方ACK和FIN报文会分开发送。

    UDP协议:UDP(User Datagram Protocol)用户数据报协议,非连接的协议,传输数据之前源端和终端不 建立连接,当它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上。

    常见问题二:

    如果建立连接时:第一个包。客户端发送数据包不成功,服务端没有接受到数据包,肿么办?答:客户端会周期性超时重传,知道收到服务端的确认

    第二个包,即服务端发给客户端的SYN +ACK 中途被丢,没有到达客户端

    服务端会周期性超时重传,直到收到A的确认

    第三个包:客户端发给服务端的ACk中途丢失。没有到达B

    A发完ACK,单方面认为TCP为 Established状态,而B显然认为TCP为Active状态:会有三重情况

    a.假定此时双方都没有数据发送,服务端会周期性超时重传,直到收到客户端的的确认,收到之后服务端的TCP 连接也为 Established状态,双向可以发包。

    b. 假定此时客户端有数据发送,服务端收到客户端的的 Data + ACK,自然会切换为established 状态,并接受客户端的 Data。

    c. 假定服务端有数据发送,数据发送不了,会一直周期性超时重传SYN + ACK,直到收到客户端的确认才可以发送数据

    以上就为网络协议概述和TCP协议详解。。。

    相关文章

      网友评论

          本文标题:网络协议简单概述和TPC/IP协议概述以及TCP三次(四次)握手

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