课前问题
- TCP/IP四层
链路层有时也称作数据链路层或网络接口层,用来处理连接网络的硬件部分。该层既包括操作系统硬件的设备驱动、NIC(网卡)、光纤等物理可见部分,还包括连接器等一切传输媒介。
网络层的作用是在复杂的网络环境中为要发送的数据报找到一个合适的路径进行传输
传输层的主要功能大致如下:
(1)为端到端连接提供传输服务;
(2)这种传输服务分为可靠和不可靠的,其中TCP是典型的可靠传输,而UDP则是不可靠传输;
(3)为端到端连接提供流量控制、差错控制、QoS(Quality of
Service)服务质量等管理服务。
应用层包括所有和应用程序协同工作,并利用基础网络交换应用程序的业务数据的协议。
封包
拆包
//作为参考OSI
- 应用层:负责为应用程序提供统一的接口
- 表示层:负责把数据转换成兼容接收系统的格式
- 会话层:负责维护计算机之间的通信连接
- 传输层:负责为数据加上传输表头,形成数据包
- 网络层:负责数据的路由和转发
- 数据链路层:负责MAC寻址、错误侦测和改错
- 物理层:负责在物理网络中传输数据帧
2.TCP拥塞算法为:慢开始、拥塞避免,快重传和快恢复。
慢开始:用于指数型增加拥塞窗口 增长到拥塞门槛避免增涨太快出现堵塞
启用拥塞避免避免算法
拥塞避免:用于线性增长拥塞窗口 增长到出现堵塞时重新设立增长门槛(
出现堵塞时阈值的一般)并重新开始慢开始
块重传:当接收方缺失某一信息 传回的确认信息为上一接收信息的回复
重复三次以提醒接受缺失
快恢复:当接收方发送了三个重复确认之后,发送方知道有报文丢失了,发送方不启动慢开始,而是执行快恢复算法,此时。发送方调整门限值为ssthresh为一半,同时设置拥塞窗口为最新的ssthress值,并开始执行拥塞避免算法
课上内容
同网段发包
当主机a要与主机B通信的时候,主机a知道自己的IP地址和Mac地址知道B的IP地址,嗯,但是a不知道B的Mac地址,然后通过那个子网掩码计算之后发现那个a和B在同一那个网段内,然后那个主机a就通过以太网发送一个请求主机B的Mac地址的ARP包,然后B收到这个ARP包之后把自己的Mac地址发送给主机a,然后主机a就知道了自己的IP地址,对方的IP地址,还有双方的那个Mac地址,这样就可以发包了。、、
ARP不能跨网段广播
ARP的意义在于找到吓一跳的MAC
//在这时,源IP和源MAC以及目标IP和目标MAC都已正确存在于数据包中,那么这里主机A向网络内发出这些数据包,因为目标地址在本网段,所以本网段所有主机都能收到这个数据包(这是以太网的特性),最后只有真正的目标主机B能够打开这些数据包
不同网段通信
数据包发到远程网络时,这时,目标MAC就必须改变了,在还没有出内网时,目标MAC必须写成网关的MAC地址发出去,当网关收到时,再把目标MAC地址改成下一跳的MAC地址发出去,而源IP和源MAC(课程讲源MAC变化?)以及目标IP不曾改变,就算到达了公网上,目标MAC仍然在不断改变着,直到最后,这个数据包到达目标IP的网络
NAT
多个内网客户端访问同一地址
TCP连接
课后习题
Seq用于表明下一次Ack应该有的大小(传入字节大小加一
Ack
(1)第一次握手:Server最初处于Listen状态,Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给Server,Client进入SYN_SENT状态,等待Server确认。 (2)第二次握手:Server收到数据包后由标志位SYN=1知道Client请求建立连接,Server将标志位SYN和ACK都置为1,ack=J+1,随机产生一个值seq=K,并将该数据包发送给Client以确认连接请求,Server进入SYN_RCVD状态。 (3)第三次握手:Client收到确认后,检查ack是否为J+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=K+1,并将该数据包发送给Server,Server检查ack是否为K+1,ACK是否为1,如果正确则连接建立成功,Client和Server进入ESTABLISHED状态,完成三次握手,随后Client与Server之间可以开始传输数据了。