计算机网络

OSI七层模型的作用
应用层

  • FTP、DNS、Telnet、SMTP、HTTP、WWW、NFS
  • 提供各种服务的

表示层

  • 作用:数据格式化,代码转换,数据加密 没有协议

会话层

  • 作用:建立、管理和终止连接

传输层:

  • 提供端到端的可靠传输(差错和流量控制,保证报文的正确传输。)传输层的作用是向高层屏蔽下层数据通信的细节,即向用户透明地传送报文、
  • 建立、维护/管理端到端的连接
  • TCP、UDP、IPX

网络层

  • 提供路由和寻址的功能,使两终端系统能够互连且决定最佳路径,并具有一定的拥塞控制和流量控制的能力
  • IP、ICMP、ARP、RARP、OSPF、IPX、RIP、IGRP、 (路由器)

数据链路层:

  • 通过各种控制协议,将有差错的物理信道变为无差错的、能可靠传输数据帧的数据链路(封装成帧、透明传输、差错控制、流量控制)
  • 数据的单位称为帧(frame)。数据链路层协议的代表包括:SDLC、HDLC、PPP、STP、vlan、mac、帧中继等。
  • 帧的格式:dmac(6B)|smac(6B)|type(2B)|data(46-1500)|fcs(4B)

物理层:

  • 利用传输介质为数据链路层提供物理连接,实现比特流的透明传输。
    在这里插入图片描述

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

  • 四层:网络接口层、网络层、传输层、应用层

三次握手

  • 第三次握手可以携带数据
  • 为什么两次握手不可以
  • 为了防止已失效的请求报文段突然又传送到了服务端而产生连接的误判 。
    

假如没有第三次握手,服务端接收到失效的请求报文段就会认为连接已建立,从而进入等待客户端发送数据的状态。但客户端并没有发出请求,所以不会发送数据。于是服务端就会一直处于等待状态,从而浪费资源。
第三次握手失败后:

  • 在第二次握手,服务器端向客户端发送SYN+ACK报文后,就会启动一个定时器,等待客户端返回的ACK报文
  • 如果第三次握手失败的话,客户端给服务端返回了ACK报文,服务端并不能收到这个ACK报文。那么服务端就会启动超时重传机制,超过规定时间后重新发起第二次握手,向客户端发送SYN+ACK。重传次数根据/proc/sys/net/ipv4/tcp_synack_retries来指定,默认是5次。
  • 如果重传指定次数到了后,仍然未收到ACK应答,那么一段时间后,服务端会自动关闭这个连接。但客户端认为这个连接已经建立,如果客户端向服务端写数据,服务端将回应RST包、强制关闭TCP连接,以防止SYN攻击。

四次挥手
四次挥手释放连接时,等待2MSL的意义?

  • 第 一,为了保证A发送的最后一个ACK报文段能够到达B
  • 第二,就是防止上面提到的已失效的连接请求报文段出现在本连接中

为什么建立连接是三次握手,而关闭连接却是四次挥手呢?

  • 这是因为当Server端收到Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。
  • 但是关闭连接时,当Client端发送FIN报文仅仅表示它不再发送数据了但是还能接收数据,Server端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉Client端,“你发的FIN报文我收到了”。只有等到我Server端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四步握手。在这里插入图片描述

Time_wait过多的危害和解决办法
出现背景

  • 在高并发短连接的TCP服务器上,当服务器处理完请求后立刻主动正常关闭连接。这个场景下会出现大量socket处于TIME_WAIT状态。如果客户端的并发量持续很高,此时部分客户端就会显示连接不上。

危害

  • 1.过多的话会占用内存,一个TIME-WAIT占用4k大小
  • 2.网络情况不好时,如果主动方无TIME_WAIT等待,关闭前个连接后,主动方与被动方又建立起新的TCP连接,这时被动方重传或延时过来的FIN包过来后会直接影响新的TCP连接;
  • 3.同样网络情况不好并且无TIME_WAIT等待,关闭连接后无新连接,当接收到被动方重传或延迟的FIN包后,会给被动方回一个RST包,可能会影响被动方其它的服务连接。
  • 4.time-wait状态把系统所有可用端口都占完了且未被系统回收时,就会出现无法向服务端创建新的socket连接情况。

解决方法

  • 1.首先服务器可以设置SO_REUSEADDR套接字选项来通知内核,如果端口忙,但TCP连接位于TIME_WAIT状态时可以重用端口。(重启服务器可以仍然使用这个端口)
  • 2.TIME_WAIT的超时时间
  • 3.改为长连接

TCP/UDP常用端口(端口号用来区分不同的网络服务)
TCP:

  • FTP 20 数据传输 21 控制

  • SSH 22 安全登录、文件传送(SCP)和端口重定向

  • Telnet 23 不安全的文本传输协议

  • SMTP 25 简单邮件传输协议 SMTP :全称是“Simple Mail Transfer

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值