zoukankan      html  css  js  c++  java
  • 网络通信流程

    前言

    互联网的本质是一系列网络协议。网络协议的目标就是将全世界每台电脑上的每个应用程序都唯一标识,并且以最快的速度发现这两个标识,才能进行网络通信。

    1,本机获取

    •     本机的ip地址:192.168.1.100
    •      子网掩码: 255.255.255.0
    •       网关的ip地址:192.168.1.1
    •        dns的ip地址:8.8.8.8

    2,打开浏览器,访问谷歌,地址栏输入www.google.com

    3,dns协议(基于udp协议),通过此协议获取服务器的ip地址

    4,HTTP协议,将请求按照http协议规定的格式封装好,压缩成数据包(应用层)

    5,tcp协议,tcp数据包需要设置端口,接收方(goolge)的HTTP端口默认是80,发送方(本机)的端口是一个随机生成的1024-65535之间的整数,假定为51775。(传输层)

    6,ip协议 ,,TCP数据包再嵌入IP数据包。IP数据包需要设置双方的IP地址,这是已知的,发送方是192.168.1.100(本机),接收方是172.194.72.105(google)(网络层)

    7,IP数据包嵌入以太网数据包。以太网数据包需要设置双方的MAC地址,发送方为本机的网卡MAC地址,接收方为网关192.168.1.1的MAC地址(通过ARP协议得到)(数据链路层)

    8,服务器端响应

    经过多个网关的转发,Google的服务器172.194.72.105,收到了这四个以太网数据包。

    根据IP标头的序号,Google将四个包拼起来,取出完整的TCP数据包,然后读出里面的”HTTP请求”,接着做出”HTTP响应”,再用TCP协议发回来。

    本机收到HTTP响应以后,就可以将网页显示出来,完成一次网络通信。

    PS:

    网络传输需要经过五个层,其功能和协议为:

    • 应用层:规定应用程序的数据格式(http协议)
    • 传输层:建立端口到端口的通信(tcp协议)
    • 网络层:引入一套新的地址用来区分不同的广播域/子网,这套地址即网络地址(ip协议)
    • 数据链路层:定义了电信号的分组方式(以太网协议)
    • 物理层:主要是基于电器特性发送高低电压(电信号),高电压对应数字1,低电压对应数字0
    • 我们经常把socket翻译为套接字,socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用以实现进程在网络中通信。
    • 而数据链路层和物理层则是通过以网卡实现的。
  • 相关阅读:
    P2832 行路难
    P2634 [国家集训队]聪聪可可
    模拟退火算法
    洛谷 P2986 [USACO10MAR]Great Cow Gat…(树形dp+容斥原理)
    bzoj1040: [ZJOI2008]骑士(基环树dp)
    洛谷P2014 选课(树形dp)
    洛谷P3047 [USACO12FEB]Nearby Cows(树形dp)
    bzoj1026: [SCOI2009]windy数(数位dp)
    hdu3555Bomb(数位dp)
    hdu3652B-number(数位dp)
  • 原文地址:https://www.cnblogs.com/chaojiyingxiong/p/9588919.html
Copyright © 2011-2022 走看看