C++知识点---计算机网络

本文详细介绍了计算机网络中的OSI七层模型和TCP/IP四层模型,探讨了TCP/IP数据链路层的交互过程,以及TCP与UDP的区别。同时,讨论了TCP的可靠性措施,包括序列号、确认应答、超时重传、窗口控制和拥塞控制策略。此外,文章还阐述了TCP的三次握手和四次挥手过程,以及HTTP请求/响应的步骤。最后,分析了HTTP和HTTPS的区别,HTTP状态码的意义,以及IP地址与MAC地址的作用。
摘要由CSDN通过智能技术生成

C++知识点---计算机网络


以下内容大部分整理自网络
OSI七层模型和TCP/IP四层模型
在这里插入图片描述

OSI七层模型及其包含的协议如下:
<->物理层: 通过媒介传输比特,确定机械及电气规范,传输单位为bit,主要包括的协议为:IEE802.3(中继器,集线器)、CLOCK RJ45。
<->数据链路层: 将比特组装成帧和点到点的传递,传输单位为帧,主要包括的协议为MAC(网桥,交换机)、VLAN、PPP。
<->网络层:负责数据包从源到宿的传递和网际互连,传输单位为包,主要包括的协议为IP、ARP、ICMP、IGRP(路由器)。
<->传输层:提供端到端的可靠报文传递和错误恢复,传输单位为报文,主要包括的协议为TCP、UDP、SPX。
<->会话层:建立、管理和终止会话,传输单位为SPDU,主要包括的协议为RPC,SQL。
<->表示层: 对数据进行翻译、加密和压缩,传输单位为PPDU,主要包括的协议为、JPEG、GIF、ASCII。
<->应用层: 允许访问OSI环境的手段,传输单位为APDU,主要包括的协议为FTP HTTP、TFTP、SMTP、Telnet。

TCP/IP 4层模型包括:
网络接口层:MAC VLAN
网络层:IP ARP ICMP
传输层:TCP UDP
应用层:HTTP DNS SMTP

● 请你说说TCP/IP数据链路层的交互过程
网络层等在数据链路层用MAC地址作为通信目标,数据包到达网络层等往数据链路层发送的时候,首先回去ARP缓存表去查找ip对应的MAC地址,如果查到了,就将此ip对应的MAC地址封装到链路层数据包的包头。如果缓存中没有找到,则会发起一个广播,who is ip xxx tell ip xxxx,所有收到广播的机器看到这个ip是不是自己的,如果是自己的,则以单播的形式将自己的mac地址回复给请求机器。

TCP 与 UDP 的区别

  • TCP 面向连接,UDP 是无连接的;
  • TCP 提供可靠的服务,也就是说,通过 TCP 连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP 尽最大努力交付,即不保证可靠交付
  • TCP 的逻辑通信信道是全双工的可靠信道;UDP 则是不可靠信道
  • 每一条 TCP 连接只能是点到点的;UDP 支持一对一,一对多,多对一和多对多的交互通信
  • TCP 面向字节流(可能出现黏包问题),实际上是 TCP 把数据看成一连串无结构的字节流;UDP 是面向报文的(不会出现黏包问题)
  • UDP 没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如 IP 电话,实时视频会议等)
  • TCP 首部开销20字节;UDP 的首部开销小,只有 8 个字节

● TCP和UDP适用场景
从特点上我们已经知道,TCP 是可靠的但传输速度慢,UDP 是不可靠的但传输速度快。因此在选用具体协议通信时,应该根据通信数据的要求而决定。

  • 若通信数据完整性需让位与通信实时性,则应该选用TCP 协议(如文件传输、重要状态的更新等);
  • 反之,则使用 UDP 协议(如视频传输、实时通信等)。

● TCP 黏包问题
原因:TCP 是一个基于字节流的传输服务(UDP 基于报文的),“流” 意味着 TCP
所传输的数据是没有边界的。所以可能会出现两个数据包黏在一起的情况。

解决:

  • 发送定长包。如果每个消息的大小都是一样的,那么在接收对等方只要累计接收数据,直到数据等于一个定长的数值就将它作为一个消息。
  • 包头加上包体长度。包头是定长的 4 个字节,说明了包体的长度。接收对等方先接收包头长度,依据包头长度来接收包体。
  • 在数据包之间设置边界,如添加特殊符号 \r\n 标记。FTP 协议正是这么做的。但问题在于如果数据正文中也含有\r\n,则会误判为消息的边界。
  • 使用更加复杂的应用层协议。

请你说说传递到IP层怎么知道报文该给哪个应用程序,它怎么区分UDP报文还是TCP报文
根据端口区分; 看ip头中的协议标识字段,17是udp,16是tcp

请问TCP用了哪些措施保证其可靠性

1、序列号、确认应答、超时重传
数据到达接收方,接收方需要发出一个确认应答,表示已经收到该数据段,并且确认序号会说明了 它下一次需要接收的数据序列号。如果发送发迟迟未收到确认应答,那么可能是发送的数据丢失, 也可能是确认应答丢失,这时发送方在等待一定时间后会进行重传。这个时间一般是2*RTT(报文段 往返时间)+ 一个偏差值。
2、窗口控制与高速重

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值