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

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协议详解。。。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容