TCP_IP原理1

TCP VS UDP:
1.UDP是无连接,而TCP是有连接;
2.UDP是不稳定的,而TCP是稳定的;
3.UDP是面向数据报,而TCP是面向数据流;
4.UDP是有接收缓冲区的,没有发送缓冲区,而TCP既有发送缓冲区也有接收缓冲区;

传输层:

 端口号:用来找到应用程序。
最大端口号:0-65535
MySQL:3306
Tomcat:8080
http:443
 端口号分类:
  1.知名端口号0-1023 FTP:21; SSH:22; Telnet:23; HTTP:80
  2.动态端口号:1024-65535

1.一个端口号可以被多个程序使用吗?
 不可以
2.一个程序可以有多个端口号吗?
 可以,一个手机号只能归属一个人,但是一个人可以拥有多个手机号

UDP协议(传输层):
在这里插入图片描述
16位UDP长度=UDP头部长度(8个字节)+数据长度
UDP 一个包的最大理论长度=2的16次=65536/1024=64KB

面试题:如果UDP编程的时候的数据大于64KB会怎样?
 1.在应用层进行数据包的拆分和组合。
 2.大于64KB不处理,交给TCP/IP 协议去处理,它会在网络层进行分包和组包 。(不用 )
*校验和是用来要确定数据在传输过程中是否被篡改,也就是用来判断数据的正确性的。
如何判断的?假设数据是以MD5进行校验和的计算,那么原始的数据会先MD5得到一个值,把这个值存储在16位的校验和当中;接收端收到内容之后,按照通过的规则加密数据得到一个校验和,用这个计算出来的校验和和UDP头中的16位校验和对比,如果相等数据是正确的。

全双工:发送端或者是接收端,既能发送消息又能接受消息。
半双工:发送端只能发送消息,不能接收消息;接收端只能接收消息,不能发送消息。
UDP:全双工
TCP:半双工

TCP协议:
在这里插入图片描述

URG:当是1表示紧急指针。
ACK:是否是确认应答消息,如果是1表示是确认应答的消息。
PSH:用来表示是否立即从缓冲区取走数据。
RST:复位标识。
SYN:同步序列号标识。(TCP连接时候使用)
FIN:结束序列号标识。(TCP断开连接的时候)
16位校验和:用来确定当前的数据是否是正确的。

超时重发策略:
 策略1:发送不会以固定的频率发送。策略1采取的是悲观策略,如果第一次消息发送失败,那么大概率第二次发送消息也会失败,所以TCP会以指数级超时时间增长的频率来发送消息。

第一次超时重发时间间隔:500ms。
第二次超时重发时间间隔:2500ms。
第三次超时重发时间间隔:4
599ms。

 策略2:如果经历了一定的重试次数,消息还没有得到应答,那么就会停止发送。

TCP连接管理:
 3次握手(3次通讯)
在这里插入图片描述
ESTABLISHED:表示三次握手已经完成,可以进行数据的传输

TCP 4次挥手:在这里插入图片描述
在这里插入图片描述
3次挥手行不行?
有可能可以,对应到程序:接收缓冲区没有数据了,那么就可以直接关闭了

TIME_WAIT 2 MSL(最大超时时间)?
2 MSL = ACK最大超时时间(1 MSL)+对方发送给他消息的一个最大等待时间(1 MSL)

如果发现服务器端存在大量CLOSE_WAIT说明程序有问题?
答:程序的 bug,程序中没有调用close()主动关闭连接。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值