计算机网络

为什么有协议?----两个计算机是如何在网络中交流的

   协议是通信双方的一种约定,包括格式和次序,没有这些机器将无法交流

   谁指定了这些网络协议   IETF

因特网协议的规则



 


 
  

     协议的封装:

  1. 机器A上的某应用程序向机器B发消息,例如HTTP消息
  2. 机器A的网络层协议一次把该消息封装成  TCP包-->IP包-->链路层数据包
  3. 链路层的消息发送给交换机A
  4. 交换机A收到消息后发给了路由器
  5. 路由器去除链路层封装,检查地址,发现机器B是目的地,然后重新生成一个链路层数据包发给交换机B
  6. 交换机B收到消息发给机器B

应用层协议

 常见的应用成协议

  •    电子邮件 SMTP, POP3, IMAP
  •    远程终端访问 Telnet, SSH
  •    Web HTTP, HTTPS
  •    文件传输 FTP
  •    因特网电话/视频 SIP, RTP

HTTP   VS  HTTPS

  • HTTP      无状态协议  服务器不保存客户端任何信息 ,可以模拟会话 ,服务器端生成要给sessionId 发给浏览器放在cookie里,下次用这个cookie去请求      HTTP协议是纯文本协议,不安全
  • HTTPS    S代表安全

   怎样安全?

    https 采用的是对称加密(一个假面)和  RSA 非对称加密结合的方式

  1.    浏览器访问服务器 https://www.baidu.com
  2. 服务器 发送给浏览器 的数字证书(包含公钥和一些证书信息和数字签名,数字签名的生成方式是将公钥和证书信息 用hash算法得到结果后用CA的私钥加密,浏览器得到这些数据后可以用CA公钥解密签名 和 用hash算法 计算这些零散信息后 ,比对结果是否一致,来判断证书是否被改动过)  数字证书是为了安全的传输公钥
  3. 浏览器生成对称密钥,用公钥加密后发给服务器
  4. 服务器解密保存对称密钥
  5. 以后双方可以用对称密钥来通信了

TCP 传输层

TCP协议是 实现两个应用程序间可靠传输的协议   。原理:失败重传,

    【QQ客户端:10022】<----- ----->【QQ服务器:443】

    这一对就是socket,传输层的抽象,443是https的端口,客户端端口随意。TCP协议不管IP地址

    如何处理的呢?

  1. 如果发送完  分组编号A的分组后,等待反馈,结果是无法识别,或没收到A,重新发送分组A
  2. 丢包?发送分组A后启动定时器,如果超时仍没有反馈,重发,重新启动定时器
  3. 固定发送的未收到确认的包不能超过4个
  4. 如果多组流水线发送,中间丢包了,那么后续收到的包可以先缓存起来,直到收到丢失的包,再按照元顺序全部返回给上级调用

IP 网络层

  把数据包从一个主机运送到另外一台主机,中间有很多路由器设备

  网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。

   虚电路 VS  分组交换

  •    虚电路 是  在网络上建立一条固定通路,在机器A和机器B通讯中始终保持连接,占用带宽
  •    分组交换,就像边走边问,最终只要能到达就行

  网络层采用分组交换方式

      手工配置ip地址太麻烦了,都是我们去请求 DHCP服务器 在动态给我们分配ip地址(开机自动完成,DHCP服务器右我们家里的路由器充当)路由器只关注下一跳地址

      NAT  解决IPV4用光问题,路由器给连它的机器自己分配局域网内的地址,例如我们家中的手机,电脑,ipad ,路由器有个NAT对照表,那个LAN段对应WAN上固定ip的不同端口

链路层

    数据最终会封装为连路层帧在机器中传输

  •      MAC地址   相当于人的身份中,存在网卡中   
  •      IP地址    相当于人的邮寄地址 ,存在内存中

    如何知道我们要访问的 网址的ip地址呢?DNS请求

    如何知道我们要访问的 ip地址的MAC地址呢?ARP广播请求

   链路层根据目的MAC地址,具体决定数据下一步走向

 

综合

 

 

 上网过程

     1. 打开电脑,连上网络,只有MAC地址,没有IP地址,用DHCP获取IP , 广播一条数据包

      DHCP报文:【想租IP,谁有?】----》UDP报文:【目的端口:67,源端口68】---》IP数据报:【目的地:255.255.255.255,源地址:0.0.0.0】--》以太网帧【目的地:FF..,源地址:11:27...】

      DHCP返回  :你的ip:192.168.1.2   网关路由器:192.168.1.1  DNS服务器 202.102.224.69

     2.访问百度 只知道域名

      DNS查询:【想知道www.baidu.com的ip】----》UDP报文:【目的端口:53,源端口XX】---》IP数据报:【目的地:202.102.224.69,源地址:192.168.1.2】--》以太网帧【目的地:??..,源地址:11:27...】

     3.上一步骤的,目的地mac地址还没有咋办?

       通过ARP广播 获得网关路由器的MAC地址   假设为88:25:93:79:E0:C8,放在2的报文中,此时可以将2的DNS查询发出了

     4.获得百度的ip   假设 115.239.211.112,建立TCP连接(socket)发送HTTP请求

      HTTP:【GET/www.baidu.com】----》UDP报文:【目的端口:80,源端口XX】---》IP数据报:【目的地:115.239.211.112,源地址:192.168.1.2】--》以太网帧【目的地:88:25:93:79:E0:C8,源地址:11:27...】

我关于这些协议层的目前的理解:组合起来使用,拆开看的话,链路层管  下一步怎么走,发给那个中间路由,要得到中间路由的Mac地址(通过ARP),网络层记录一下ip地址,分配ip地址(DHCP服务,NAT服务),供链路层传输的时候使用,路由器会把 链路层剥掉,通过ip层重新定制链路层,  TCP传输层关注进程间的可靠通信,具体ip是什么,怎么传出的不关注,关注可靠传输,  应用层则关注通信安全。

   

猜你喜欢

转载自kelly-xiao.iteye.com/blog/2355650