html
知乎浏览器
传输层概述服务器
TCP/IP协议是一个协议簇。里面包括不少协议的,UDP只是其中的一个, 之因此命名为TCP/IP协议,由于TCP、IP协议是两个很重要的协议,就用他两命名了。 tcp
传输层的主要功能: 为端到端链接提供可靠的传输服务,为端到端链接提供流量控制,差错控制,服务质量等管理服务,具备传输层功能的协议:TCP 、SPX 、NetBIOS。spa
.net
TCP(Transmission Control Protocol 传输控制协议)是一种面向链接的、可靠的、基于字节流的传输层通讯协议。htm
UDP定义blog
UDP (User Datagram Protocol 用户数据报协议)是一种无链接的传输层协议,提供面向事务的简单不可靠信息传送服务。游戏
区别:
TCP---传输控制协议,提供的是面向链接、可靠的字节流服务。当客户和服务器彼此交换数据前,必须先在双方之间创建一个TCP链接,以后才能传输数据。TCP提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另外一端。
UDP---用户数据报协议,是一个简单的面向数据报的运输层协议。UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,可是并不能保证它们能到达目的地。因为UDP在传输数据报前不用在客户和服务器之间创建一个链接,且没有超时重发等机制,故而传输速度很快 。
使用场景:
TCP: 浏览器,SSH QQ文件传输等
UDP:音频和多媒体应用,QQ聊天,网络游戏和直播等
tcp头部结构:源端口 16位;目标端口 16位;序列号 32位;回应序号 32位;TCP头长度 4位;reserved 6位;控制代码 6位;口大小 16位;偏移量 16位;校验和 16位;选项32位(可选);
一、ACK 是TCP报头的控制位之一,对数据进行确认。确认由目的端发出, 用它来告诉发送端这个序列号以前的数据段都收到了。 好比确认号为X,则表示前X-1个数据段都收到了,只有当ACK=1时,确认号才有效,当ACK=0时,确认号无效,这时会要求重传数据,保证数据的完整性。
二、SYN 同步序列号,TCP创建链接时将这个位置1。
三、FIN 发送端完成发送任务位,当TCP完成数据传输须要断开时,提出断开链接的一方将这位置1。
第一次握手: 主机A尝试链接服务器B,向服务器B发送含有**同步序列号额度标志位的数据段(就是 syn包 全称为 同步序列标号 Synchronize Sequence Numbers ),syn = j **,而后主机A进入SYN_SEND状态等待服务器B确认————“A对B说:请求通话?”
第二次握手: 服务器B接收到主机A发送的`syn`包并肯定(ack = j + 1),而后给主机A返回一个数据段:SYN(syn = k)+ACK 包(其中包括同步序列标号syn 和 肯定应答ACK),而后服务器B进入 SYN_RECV 状态————“B收到A的话,B对A说:你能听到吗?”
第三次握手: 主机A接收到 SYN+ACK包,向服务器B发送肯定包ACK(ack = k + 1),此包发送完毕,主机A和服务器B进入ESTABLISHED状态,完成三次握手————“A听到B的话,A又对B说:我立刻进入正题!”
3次握手的特色:
没有应用层的数据
SYN这个标志位只有在TCP创建链接时才会被置1
握手完成后SYN标志位被置0
TCP创建链接要进行3次握手,而断开链接要进行4次
第一次: 当主机A完成数据传输后,将控制位FIN置1,提出中止TCP链接的请求 ;
第二次: 主机B收到FIN后对其做出响应,确认这一方向上的TCP链接将关闭,将ACK置1;
第三次: 由B 端再提出反方向的关闭请求,将FIN置1 ;
第四次: 主机A对主机B的请求进行确认,将ACK置1,双方向的关闭结束.。
由TCP的三次握手和四次断开能够看出,TCP使用面向链接的通讯方式, 大大提升了数据通讯的可靠性,使发送数据端和接收端在数据正式传输前就有了交互, 为数据正式传输打下了可靠的基础。