传输层协议介绍

目录

         一,TCP协议介绍

         二.TCP报文的格式

         三.TCP的三次握手

四.TCP的四次挥手

五.常见的端口协议

六.UDP协议


一,TCP协议介绍


ps:传输层的作用:定义传输数据的协议端口号,以及流控和差错校验。

首先TCP指的是传输控制协议,它是一种面向连接的、可靠的、基于字节流的传输层通信协议。
1.TCP是面向连接并且可靠的进程到进程通信的协议
2.TCP能够提供全双工服务,也就是说数据可以在同一时间内能进行双向传输。(比如双方打电话。)


3.TCP报文段
   3.1.TCP将若干字节构成一个分组,这个就叫做报文段
   3.2 TCP报文段封装在IP数据包中


二.TCP报文的格式


   首先TCP报文格式包含了源端口号,目标端口号,序号,确认号,首部长度,控制位(重点),窗口大小,校验和,紧急指针,选项。

源端口号(16):这里指的就是发送方进程的端口号(指我们的端口号)

目标端口号(16):这里指接收端进程的端口号,当接收端收到源端口的数据段后,根据端口好来确定给哪个应用程序(指对方收到了数据以后,确定打开哪个相对应的程序)

序号(32):这里指发送端给每个字节进行编号,方便重组(简单来说就是收到数据以后给数据重新排列,保证不会出错)。

确认号(32):对发送端的确认信息(简单来说就是接收端告诉发送端这个数据我们已经收到了)

首部长度(4):这里指:它可以用来确定TCP首部数据结构的字节长度(一般来说TCP首部为20字节,但是最大扩展是60字节)

控制位(重点):(这里没什么技巧背就完了)
URG:紧急位。紧急指针有效位
ACK:确认位。ps:只有当ACK=1时,确认序列号字段才有效:当ACK=0时,确认号字段无效。
PSH:紧迫位。标志位为1时,要求接受方尽快将数据段送达应用层。
RST:重置位。当RST值为1时,通知重新建立TCP连接。(相当于机器重启)
SYN:同步(连接)位。同步序号位,TCP需要建立连接时将这个值设为1.
FIN:断开位。当TCP完成数据传输需要断开连接,提出断开连接的一方将这个值设为1.

窗口大小(16):这里指本地接受数据段的数目,这个大小是可以改变的(简单来说就是网络畅通时传输数据会变快一点,当网络不稳定时可能会慢一点来保证数据的可靠传输)

校验和(16):用来做差控制。(简单来说就是用来校验数据,它会检验发送和到达目的的数据,如果两次数据一样就可以,反之就丢弃)。

紧急指针(16):这个和URG一起用,但是要当UGR=1的时候才有效。

选项:在TCP首部可以有多达40字节的可选信息。(简单这里跟首部长度相关,首部长度想到多少字节,就到达多少字节)。


 

 


三.TCP的三次握手


首先我们要了解什么是三次握手,简单来说就是指每次发送数据之前我们都要和对方建立一个连接,这个连接有三个步骤,所以叫三次握手。简单的举个例子:


PC1要发送数据给PC2,那么第一步要发送SYN报文(Seq=1(这里指的是序列号随机的),SYN=1(表示发送连接请求))给PC2以此来建立连接,这时PC2收到了请求也给PC1发送SYN+ACK报文(Seq=y(PC2的数据号),Ack=x+1(因为PC1的序列号时1,我们接受到了,+1代表我要回复它,ps:ACK不能等于0),SYN=1(同时也一个建立连接),ACK=1(指确认)),最后PC1接受到了ACK报文(Seq=x+1(这时客户端的序列号为一),Ack=y+1(这里指的是PC2,相当于我收到了它的消息,我也得回复一下),ACK=1)。


完整解释就是:PC1想要发送数据给PC2,第一步发送SYN报文给PC2(此时PC1处于同步已发送的状态),第二步PC2收到PC1的请求后也要发送SYN和ACK报文来确认(此时PC2处于同步收到)最后一步就是发送ACK报文告诉它我已经知道了以此来建立链接。


四.TCP的四次挥手


讲解四次挥手的过程(可以用客户端向服务器端请求一个网页举例) 
Network
某个应用进程首先调用close,称该端执行"主动关闭”(active close)。该端的TCP于是发送一个FIN分节,表示数据发送完毕。


接收到这个FIN的对端执行"被动关闭”(passiveclose),这个FIN由TCP确认。
一段时间后,接收到这个文件结束符的应用进程将调用close关闭它的套接字。这导致它的TCP也发送一个FIN。
接收这个最终FIN的原发送端TCP(即执行主动关闭的那一端)确认这个FIN。 6 个项目 选中1个项 

第一次挥手:Client发送Fin+Acknowledgement 给Server端,表示自己要断开连接,这个时候Client端已经没有数据要发送了。
第二次挥手:Server接收到client发送的断开请求连接,那么这个时候Server需要发送一个Acknowledgement=1用于确定客户请求断开的信息成功接了;有时候这个过程也会和第三次握手进行合并,就像上面展示的一样。
第三次挥手:Server如果所有的数据已经接收完毕,这个时候就会发送一个Fin=1,而Acknowledgement=0用于表示Server端已经没有数据要发送了。需要关闭连接。
第四次挥手:Client端需要发送一个Acknowledgement=1表示这个Client接收到了Server的关闭请求信息,这样一来双方的就都关闭了
 
简单来说,给大家举个例子:

 

 


PC1要和PC2断开连接,那么PC1就要给PC2发送一个FIN/ACK断开连接(FIN=1(这里指断开连接协议),ACK=1(这里表示确认)),这时PC2收到了请求并进行确认。那么同理PC2也要发送FIN/ACK报文(FIN=1,ACK=1)给PC1来确认我要断开连接,那么PC1收到了PC2的回应后就断开连接。

完整解释:PC1想要和PC2断开连接,那么PC1就要给PC2发送FIN/ACK报文,它在发送给PC2的时候也要等待PC2的回应,然后PC2收到了断开连接的请求后,给PC1发送一个ACK报文告诉它我知道了,然后PC2也要给PC1发送FIN/ACK报文,在得到PC1的回复之前。PC2也得等待PC1的回应,PC1收到PC2的请求过后,也要给PC2发送一个ACK确认包,最后PC2收到PC1的回复后就断开连接。

五.常见的端口协议


TCP端口号:

20:ftp-传输端口,传输文件
21:ftp-FTP服务器所开放的控制端口

23:telnet-用于远程登陆

25:smtp-简单邮件传输协议

80:http-超文本传输协议

110:pop3-用于邮件的接收

UDP端口号:

69:TFTP-简单文件传输协议

111:RPC-远程调用
123:NTP-网络时间协议


六.UDP协议


   首先我们要知道UDP协议是什么 它的中文名是用户数据报协议,是OSI参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。
   UDP协议它是一个无连接,不可靠的传输协议,但它的花费少

     6.1UDP报文的首部格式
  它包含了源端口号,目标端口号,UDP长度,UDP校验和。


 

 

(ps:UDP和TCP的区别):如何实现信息的可靠传递方面不同。
面向连接:安全可靠的进程之间通信
全双工通信:可同时进行双向通信
UDP:无面向连接,不可靠,花销小

拓展:1、为什么三次握手不能两次进行连接?
“为了实现可靠数据传输, TCP 协议的通信双方, 都必须维护一个序列号, 以标识发送出去的数据包中, 哪些是已经被对方收到的。 三次握手的过程即是通信双方相互告知序列号起始值, 并确认对方已经收到了序列号起始值的必经步骤 如果只是两次握手, 至多只有连接发起方的起始序列号能被确认, 另一方选择的序列号则得不到确认”

2、为什么断开连接是四次挥手不是三次挥手?
因为是双向连接。两次握手只是断开单向连接,双向断开就需要四次握手。

3、如果已经建立链接,但是客户端突然出现了故障应该怎么办?
Tcp设有一个保活计时器,服务器每收到一次客户端的请求后,都会重新复位这个计时器,时长通常设置为2个小时,如果两个小时还没有收到客户端的任何数据,服务器就会发送一个探测报文段,以后没间隔75秒发送一次,如果一连发了10个探测报文仍然没响应,服务器就认为客户端出了问题,关闭连接。(简单来说就是服务端不能一直等下去,白白浪费资源)

小结:
1.TCP协议的介绍
2.TCP的报文格式
3.TCP的三次握手
4.TCP的四次挥手
5.UDP协议介绍
6.TCP常见的协议端口


 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值