网络相关问题(体系结构,tcp三次握手)

1 篇文章 0 订阅

1、计算机网络体系结构:osi七层协议 tcp/ip四层协议 五层协议

1、应用层:应用层协议主要有域名系统DNS,HTTP协议,支持电子邮件的SMTP协议等,应用层交互的数据单元称为报文

2、运输层:运输层主要有两种协议 传输控制协议TCP 提供面向连接的,可靠的数据传输服务 

用户数据协议UDP 提供无连接的,尽最大努力的数据传输服务,不保证数据准确性

3、网络层,又叫网际层或者IP层

4、数据链路层

5、物理层

TCP与UDP

tcp结构

特点:面向连接 一定是一对一的,而udp协议可以一对多

可靠的

字节流

经常应用于FTP,http,https等需要可靠性交付的  而udp主要应用于dns,snmp以及视频,音频等多媒体通信,广播通信等

序列号:解决网络包乱序问题,序列号作用:

a、保证可靠性(当接收到的数据总少了某个序号的数据时,能马上知道)
b、保证数据的按序到达
c、提高效率,可实现多次发送,一次确认
d、去除重复数据

确认应答号:解决不丢包的问题

udp

三次握手:SYN表示建立连接,ACK表示响应

1、客户端初始化序列号,同时把SYN标志位改为1,,然后把SYN报文发给服务端,此报文不包含应用层数据此时客户端处于syn-sent状态

2、服务端收到客户端的syn报文后,首先也初始化自己的序列号,然后将tcp首部的确认应答号+1,然后将标志位SYN和ACK置为1,然后将此报文发给客户端,此报文也不包含数据,之后服务端处于syn-rcvd状态

3、客户端收到报文后,回应服务端最后一个报文,首先将ACK标志位置为1,然后确认应答号+1,然后发送给服务端,这次是带数据的,之后客户端处于established状态,服务端收到以后,也进入established状态

三次握手原因:1,防止旧的重复连接初始化造成混乱 2、同步双方初始序列号 3、避免资源浪费

通过三次握手能防止历史连接的建立,能减少双方不必要的资源开销,能帮助双方同步初始化序列号

4、保证连接是双工的,即客户端给服务端发消息的同时,服务端也能给客户端发消息

tcp连接断开,四次挥手 FIN表示断开连接

1、客户端准备断开连接,会发送一个tcp首部FIN标志位为1的报文,即FIN报文,之后客户端进入FIN_WAIT_1状态

2、服务端收到该报文后,向客户端发送ACK报文,然后进入CLOSED_WAIT状态,客户端收到ACK报文后,进入FIN_WAIT_2状态

3、服务端处理完数据后,也向客户端发送FIN报文,之后服务端进入LAST_ACK状态

4、客户端收到FIN报文后,回一个ACK报文,之后进入TIME_WAIT状态,服务端收到ACK报文后,进入close状态,客户端经过2MSL一段时间后,自动进入close状态

主动关闭连接的,才有TIME_WAIT状态

为什么要等待2MSL的时间才关闭?

1. 为了保证连接的可靠关闭。如果server没有收到最后⼀个ACK,那么就会重发FIN。

2. 为了避免端⼝重⽤带来的数据混淆。如果client直接进⼊CLOSED状态,⼜⽤相同端⼝号向server建⽴⼀个连接,上⼀次连接的部分数据在⽹络中延迟到达server,数据就可能发⽣混淆了。

tcp/ip协议如何保证可靠性:

1、校验和 发送方将整个报文段分为多个16位的段,然后进行反码相加,将结果存在校验和字段中,接收方用相同的方法计算,如果结果位校验字段所有位是1则正确

2、确认应答与序列号 通过ACK标志位确保应答是否有效,序列号可以保证数据按序到达,提高效率,并且保证了可靠性

3、超时重传

4、连接管理,即tcp建立连接时的三次握手和断开连接时的四次挥手

5、流量控制 接收方处理数据的速度是有限的,如果发送方发送数据的速度过快,导致接收端的缓冲区满,而发送方继续发送,就会造成丢包,继而引起丢包重传等一系列反应。因此tcp根据接收方的处理能力,来决定发送方的发送速度,即流量控制

在tcp报文段首部中有一个16位窗口长度,

6、拥塞控制 慢启动,先发出少量流量

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值