计算机网络--运输层

运输层(传输层),解决计算机程序到计算机程序之间的通信问题,即端对端的通信,向高层屏蔽下面网络核心的细节
引入原因:增加复用和分用的功能,消除网络层的不可靠信,提供可靠的,与实际使用的网络无关的信息传输
tcp/ip运输层的两个协议:
面向数据报协议UDP( User Datagram Protocol):提供无连接服务
传输控制协议TCP(Transmission Control protocol):提供面向连接服务
以上协议都使用ip协议 两种协议在协议栈的位置
最上面那里是应用层
在osi术语中,两个对等传输肢体在通信时传送的数据单位叫做运输协议数据单元TPDU,在TCP/IP体系中,使用tcp udp分别称之为TCP报文段或udp用户数据报
使用UDP和TCP协议的各种应用和应用层协议

 应用                 应用层协议           运输层协议
名字转换                DNS                   UDP
文件传送               TFTP                   UDP
路由选择协议            RIP                    UDP
IP地址配置           BOOTP,DHCP               UDP
网络管理               SNMP                   UDP
远程文件服务器          NFS                    UDP
IP电话                 专用协议                UDP
流式多媒体通信         专用协议                  UDP
多播                   IGMP                   UDP
电子邮件               SMTP                   TCP
远程终端输入           TELNET                  TCP
万维网                 HTTP                   TCP
文件传送                FTP                   TCP  

运输层的端口

端口:用16位来表示,即一个主机共有65536个端口。序号小于256的端口称为通用端口,如FTP是21端口,WWW是80端口等。端口用来标识一个服务或应用。一台主机可以同时提供多个服务和建立多个连接。端口(port)就是传输层的应用程序接口。应用层的各个进程是通过相应的端口才能与运输实体进行交互。服务器一般都是通过人们所熟知的端口号来识别的。例如,对于每个TCP/IP实现来说,FTP服务器的TCP端口号都是21,每个Telnet服务器的TCP端口号都是23,每个TFTP(简单文件传输协议)服务器的UDP端口号都是69。任何TCP/IP实现所提供的服务都用众所周知的1-1023之间的端口号。这些人们所熟知的端口号由Internet端口号分配机构(Internet Assigned Numbers Authority, IANA)来管理。

用户数据报协议UDP

UDP只在IP数据报服务之上增加了很少一点的功能,复用和分用的功能以及差错检测的功能,主要的特点是:
1.UDP是面向无连接的,发送数据之前不需要建立连接
2.UDP使用 尽最大努力交付,即不保证可靠交付 因此主机不需要维持复杂的链接状态表
3.UDP面向报文。 应用程序交下来的报文,在添加首部后就交付IP层
4.UDP没有阻塞控制 网络阻塞不会使源程序发送速率降低
5.UDP支持一对一,多对一,一对多,多对多的交互通信
6.UDP的首部开销小,只有8个字节 tcp20字节

传输控制协议TCP

特点:
1. 面向连接的传输层协议
2. 每一条tcp只能有两个端点
3. 提供可靠交付的服务
4. 提供全双工通信
5. 面向字节流

TCP的连接

tcp把连接作为最基本的抽象 tcp连接的端点叫做 套接字(socket)或者插口,端口号拼接到ip地址即构成套接字

可靠传输的工作原理

停止等待协议
每发送完一个分组就停止发送,等待对方确认,收到确认后再发送下一个分组
超时重传

连续ARQ协议

流量控制(让发送方的发送速率不雅太快,要让接收方来得及接收)
拥塞控制(接受端控制发送端)

三次握手:

三次握手的目的:是使收发端的数据发送和接收同步,协调可以收发的数据量,建立虚连接

服务器进程就绪 等待客户端连接
1.客户端主动打开向服务端发送请求报文段
2.服务器被动打开,收到连接请求报文段后。如确认连接向客户端发送确认
3.客户端收到确认后,向服务器发送确认(防止已失效的连接请求报文端突然又传到了服务端)
整个过程如图

这里写图片描述

1)第一次握手:建立连接时,客户端A发送SYN包(SYN=j)到服务器B,并进入SYN_SEND状态,等待服务器B确认。

(2)第二次握手:服务器B收到SYN包,必须确认客户A的SYN(ACK=j+1),同时自己也发送一个SYN包(SYN=k),即SYN+ACK包,此时服务器B进入SYN_RECV状态。

(3)第三次握手:客户端A收到服务器B的SYN+ACK包,向服务器B发送确认包ACK(ACK=k+1),此包发送完毕,客户端A和服务器B进入ESTABLISHED状态,完成三次握手。

完成三次握手,客户端与服务器开始传送数据。

确认号:其数值等于发送方的发送序号 +1(即接收方期望接收的下一个序列号)。

关闭链接:
由于TCP连接是全双工的,因此每个方向都必须单独进行关闭。这个原则是当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向的连接。收到一个 FIN只意味着这一方向上没有数据流动,一个TCP连接在收到一个FIN后仍能发送数据。首先进行关闭的一方将执行主动关闭,而另一方执行被动关闭。

CP的连接的拆除需要发送四个包,因此称为四次挥手(four-way handshake)。客户端或服务器均可主动发起挥手动作,在socket编程中,任何一方执行close()操作即可产生挥手操作。

(1)客户端A发送一个FIN,用来关闭客户A到服务器B的数据传送。
(2)服务器B收到这个FIN,它发回一个ACK,确认序号为收到的序号加1。和SYN一样,一个FIN将占用一个序号。
(3)服务器B关闭与客户端A的连接,发送一个FIN给客户端A。
(4)客户端A发回ACK报文确认,并将确认序号设置为收到序号加1。
自己的话简单的说,客户机首先跟服务器说,我要走了,服务器说知道了(此时关闭客户机向服务器通信),服务器说,我也不理你了,客户机说知道了

四次挥手的实质:

简单说来是 “先关读,后关写”,一共需要四个阶段。以客户机发起关闭连接为例:
1.服务器读通道关闭
2.客户机写通道关闭
3.客户机读通道关闭
4.服务器写通道关闭

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值