OSI 5层协议,socket,从协议角度看网络通信

分为 物理层,数据链路层,网络层,传输层,应用层

1.物理层

主要是基于电器特性发送高低电压(电信号),常见设备光缆,双绞线,无线电波

 

2.数据链路层

有一个统一的标准:以太网协议ethernet

一组电信号组成一个数据包,叫“帧”,以“帧”为单位传输数据

“帧”包括2部分,报头head和数据data。head包含18个字节,源mac地址6字节,目标mac地址6字节,数据类型6字节。数据data最少包含64字节,最多1518字节,超过则分片发送。

通过广播方式,arp协议(用于找到目标主机的mac地址)通信,即世界上的计算器可以彼此通信了。

 

3.网络层

由于数据链路层是通过广播方式发送,即一台机器发送的数据包理论上全世界的计算机都会收到,这显然是不合理的。

由此引入一套新的地址协议来区分不同子网/广播域,这个地址协议就是网络地址,目前应用最多的是IP协议。

ipv4:由4个点分10进制组成,范围在0-255,也就是32位2进制,4个8位2进制

ipv6:由6个冒分16进制组成

那么如何用2个IP来区分不同子网呢?把2个ip和子网掩码进行与运算,计算出的地址一样则表示在同一个子网内

ip数据包:放在以外网包的data部分,head长度为20-60字节,data最长为65515字节

 

4.传输层

我们日常使用的QQ,浏览器等等都是应用程序,电脑上开着多个应用层序,数据如何给到某一个应用层序呢?通过端口,即应用程序和网卡关联的编号。传输层实现的是端口到端口的通信,即应用与应用的通信

端口范围0-65535,0-1023为系统占用端口,127.0.0.1叫回环地址,单机程序间的应用通信地址

TCP协议:每一条TCP连接都有2个端点,端点叫套接字(socket),例:套接字192.3.4.16:80。当通过TCP通信时,通过3次握手建立全双工(双方都可收发消息)通信,关闭时是4次挥手。TCP是可靠传输,没有长度限制(理论上是这样,但是没有东西是不会受到大小限制的,所以通常长度不会超过IP数据包的长度)

UDP协议:不可靠传输,报头一共只要8字节,总长度不超过65535字节

 

5.应用层

现在有了mac地址,ip地址找到目标主机,有端口号找到目标应用。但是,应用也是有很多类型的,最基本的浏览器,服务器2种类型的应用,他们的数据格式是不一样的,所以需要不同的协议规定应用程序的数据格式。

例:如Email,https,ftp,需有不同的协议规定电子邮件,网页,FTP数据格式,这些应用程序的协议就构成了"应用层"

 

二 为啥要有socket

由上面知道2个应用已经可以通信了,那为什么还要搞出一个socket来呢?我们知道2个进程需要通信的前提是有唯一的端口号,显然这事不能让应用程序干,不然2个应用程序都申请用同一个端口,就冲突了。这时候socket就上场了。

socket是运输层和应用层之间的一个抽象层,作用是把TCP/IP层复杂的操作(1972年10月国际电脑通信大会结束后开始创建摸索,期间各种版本,最后1983年1月1日完成,书比你脸还宽)抽象成几个简单的接口供应用层调用。

三 主机加入网络通信如何实现?

实现一个网络通信,每台主机需具备4要素:本机IP,子网掩码,网关IP,DNS IP。获取方式有2种,1静态获取即手动设置;2动态获取即通过dhcp获取

以太网头 ip头 udp头 dhcp数据包

 

 

1以太网头源MAC地址即本机地址,目标地址还不知道,填入广播地址FF-FF-FF-FF-FF-FF

2ip地址这时本机都不知道,发出方IP设为0.0.0.0,接收方IP为255.255.255.255

3udp头是端口,发出方是68,接收方是67

现在这个数据包构造好了,然后用广播方式发送,同一个子网都收到了这个包,因为mac地址是FF-FF-FF-FF-FF-FF,而IP地址也很没卵用。但是这时DHCP服务器看到这个mac地址和IP,于是拿到这个包,发送回去一个‘DHCP相应’数据包’。

这个包mac地址是双方的网卡地址,ip地址是dhcp服务器的ip和255.255.255.255,udp端口刚好反过来,分配的ip地址和具体参数则包含在data里

于是新加入的计算机收到这个响应包,就拿到自己的ip地址,子网掩码等等信息了

 

四 从协议的角度来看一个网络通信

1 主机加入网络,拿到IP地址等等信息

2 你打开浏览器,输入www.taobao.com,想买各种'神器'

3 电脑拿到你输入的网址,通过dns协议找到域名对应的ip地址,先到根服务器--顶级服务器--域服务器--本地服务器

4 然后你就看到taobao网站的信息了,这时候你会发现网站地址开头自动变成https了,这是因为数据是基于https协议传输的

Http部分的内容,类似下面这样

GET / HTTP/1.1
Host: www.google.com
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 6.1) ……
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding: gzip,deflate,sdch
Accept-Language: zh-CN,zh;q=0.8
Accept-Charset: GBK,utf-8;q=0.7,*;q=0.3
Cookie: … …

 

5 TCP协议生成接收方端口,默认是80,发送方端口是一个随机生成的1024-65535之间的整数。标头长度20字节,加上嵌入http的数据,假设总长度为4980字节

 

6 ip协议生成双方IP,taobao的ip地址由DNS服务器找到了,ip数据包标头为20字节,那么数据包总长度为4980+20=5000字节

 

7 最后通过以太网协议和arp协议(根据接收方的ip地址找到mac地址),找到双方的mac地址。以太网数据包最大长度为1500字节,所以数据包必须分成4个包,每个包都要有IP标头20字节,那么数据包总长度变为1500+1500+1500+560=5060

 

8 经过多个网关的转发,最后taobao收到你发的http包,拼接起来,读出你的‘http请求’,然后做出'http响应’,再用TCP协议发回来。本机收到包后,通过浏览器把数据显示出来。

 

 

顶级域名:以.com,.net,.org,.cn等等属于国际顶级域名,根据目前的国际互联网域名体系,国际顶级域名分为两类:类别顶级域名(gTLD)和地理顶级域名(ccTLD)两种。类别顶级域名是                    以"COM"、"NET"、"ORG"、"BIZ"、"INFO"等结尾的域名,均由国外公司负责管理。地理顶级域名是以国家或地区代码为结尾的域名,如"CN"代表中国,"UK"代表英国。地理顶级域名一般由各个国家或地区负责管理。

  二级域名:二级域名是以顶级域名为基础的地理域名,比喻中国的二级域有,.com.cn,.net.cn,.org.cn,.gd.cn等.子域名是其父域名的子域名,比喻父域名是abc.com,子域名就是www.abc.com或者*.abc.com.
  一般来说,二级域名是域名的一条记录,比如alidiedie.com是一个域名,www.alidiedie.com是其中比较常用的记录,一般默认是用这个,但是类似*.alidiedie.com的域名全部称作是alidiedie.com的二级

posted @ 2018-12-11 17:53  Freedom_L  阅读(701)  评论(0编辑  收藏  举报