码迷,mamicode.com
首页 > 其他好文 > 详细

计算机网络

时间:2017-03-13 23:58:37      阅读:392      评论:0      收藏:0      [点我收藏+]

标签:tcp   不同   厂商   统一   冲突   address   区分   字节   长度   

 

目录

 

1 互联网协议

 当用户拥有一条设备以后,要想与外界交流,则需要将两个或多个这样的设备连接起来,而其中涉及到的路由器、交换机、网线等一系列硬件组成的网络,便是Internet。因不同地方,语言等的差异,要想通过终端设备与他人交流,则涉及到语言的统一标准,而这种标准就是互联网协议的基本雏形。一系列这样的统一标准就是互联网协议。

 互联网协议的功能:定义计算机如何接入internet,以及接入internet的计算机通信的标准。

 

osi五层模型

互联网协议按照功能的不同可以分为osi七层或tcp/ip五层或tcp/ip四层。

技术分享

 

每层常见的物理设备:

技术分享

 将应用层,表示层,会话层并作应用层,从tcp/ip五层协议的角度来阐述每层的由来与功能,搞清楚了每层的主要协议

 

2.1 物理层

 孤立的终端要想与他人通信,就必须要有硬件的支持,使它能接入Internet

技术分享

物理层功能:主要是基于电器特性发送高低电压(电信号),高电压对应数字1,低电压对应数字0

 

2.2 数据链路层

数据链路层的作用:规定电信号的分组方式。

因早期公司都有各自的分组方式,为了统一标准,诞生了ethernet(以太网)

以太网协议内容:

  1. 所有联网设备都要有网卡
  2. 每个数据要有报头和数据部分
  3. 每块网卡都要有一个MAC地址(前六位是厂商编号,后六位是流水线号),发送端和接收端的地址便是指网卡的地址

一组电信号构成一个数据报,也叫“帧”,每帧分成:报头head和数据data两部分。

   head                        data                             

 

head包含:(18个字节)

  • 发送者/源地址,6个字节
  • 接收者/目标地址,6个字节
  • 数据类型,6个字节

data包含:(最短46字节,最长1500字节)

  • 数据包的具体内容

一个数据报的长度,最短64字节,最长1518字节,超过最大值则分片发送。

 

广播:

有了mac地址,就能保证同一网络的两条主机之间的通信(一台主机通过arp协议获取另外一台主机的mac地址)。

以太网采用的就是广播的方式来发送信息,即计算机的通信基本靠吼

技术分享

 

2.3 网络层

用于广播方式过于粗暴,一个人发送信息,所有人都能收到,其产生大量数据使其并不能很好的在世界这个范围来传播信息。于是通过彼此的隔离(路由器来实现的),来使以太网能很好的工作。但局域网中的某一个体与另一局域网中某一个体的通信却不能保障。

网络层便引入新的地址,用来区分不同的广播域/子网,这套地址即网络地址。

常用的网络地址协议就是IP协议。

IP地址分为两部分:网络部分(识别子网)和主机部分(识别主机)。

单靠一个IP是不能识别子网的,它需要子网掩码的协助。子网掩码和IP地址进行位与运算,就能得到网络地址。网络地址就是该IP所在的子网。

IP数据包也分为head和data部分

head:20~60字节

data:最长65515字节

以太网头                ip 头                                     ip数据                                

 

以太网的每个数据报数据部分,最长只能有1500字节。因此,如果IP数据包超过1500字节,将需要分成多个以太网数据报来发送。

 

2.4 传输层

网络层的IP可以帮我们区分子网,以太网的mac可以帮我们找到主机。但当我们开启多个程序时,如何来识别主机上的应用程序,则需要传输层提供的端口功能来完成。

传输层作用:建立端口与端口之间的通信。

ps:端口范围0-65535,0-1023为系统占用端口

传输层常用的协议:tcp和udp协议

tcp是可靠传输,tcp数据包没有长度限制,但为了保证网络传输的效率,通常TCP数据包的长度不会超过IP数据包的长度,以确保单个TCP数据包不必再分割。

以太网头 ip头 tcp头 数据

 

udp协议:

不可靠传输,”报头”部分一共只有8个字节,总长度不超过65,535字节,正好放进一个IP数据包。

以太网头 ip头                      udp头                            数据                                           

 

 

2.5 应用层

应用层:用户使用的,程序员开发的数据多种多样,必须规定好数据的组织形式。

应用层功能:规定应用程序的数据格式。

常用的协议:http,ftp,www等,程序员可以在此层编写协议。

技术分享

 

2.6 socket

两个进程要实现通信,必须保证具有唯一的标识。本地的进程PID唯一,但网络中两个进程PID冲突的概率很高。由于IP地址的唯一性,所以我们用IP地址+协议+端口来唯一标识网络上的一个进程。

唯一标示网络中的一个进程,我们就可以用socket进行通信了。socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象层几个简单的接口供应用层调用以实现进程在网络上的通信。

技术分享

 

 

3 用户上网流程

用户程序发送的用户数据,只要符合应用层的数据规范,会在报头加入所使用的应用层协议,向下通过传输层时,会封装应用程序所调用的端口号和协议,再向下经过网络层时,会封装目标IP和自己IP,再通过数据链路层时,封装自己和目标的mac地址,再通过物理层将数据发送出去。到达目标计算机,会依次一层层解封,最后实现用户与用户的通信。

 4 网络通信

要想实现网络通信,需要:

  • 本机的IP地址
  • 子网掩码
  • 网关的IP地址
  • DNS的IP地址

获取方式:静态获取(手动获取)和动态获取(DHCP)

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

 

1. 以太网头:设置发送发(本机)和接收方(DHCP)的MAC地址。发送发若不知道就填一个广播地:FF-FF-FF-FF-FF-FF

2. IP标头:设置发出方的IP地址和接收方的IP地址。对于这两者本机都不知道,故发出去的本机ip设为0.0.0.0,接收方IP为255.255.255.255。

3.UDP标头:设置发出方的端口和接收方的端口。DHCP协议规定发出方是68端口,接收方是67端口。

 将数据包构造完成后,以广播的方式发送,但因接收方的mac是FF-FF-FF-FF-FF-FF,无法知道是发给谁的,会分析该包的IP地址,当看到发出方IP地址是0.0.0.0,接收方是255.255.255.255,DHCP服务器知道”这个包是发给我的”,而其他计算机就可以丢弃这个包。

接着,DHCP服务器读出这个包的内容,将分配好的IP地址和本网络的具体参数添加到data,通过一个数据包发送回去,作为响应。

新加入的计算机通过这个响应包,就能知道自己的IP地址、子网掩码、网关地址、DNS服务器等参数。

 

5 DNS服务器

ip地址是一串一串的数字,不便于记忆。所以人们发明了便于记忆的域名。DNS服务器(Domain Name Server,域名服务器)的作用是进行域名(domain name)和与之相对应的IP地址 (IP address)转换。

举个例子:www.baidu.com百度的域名,实际上应该是"www.baidu.com.",最后一个“.”是根的意思。计算机会先访问本地dns,如果有,则直接返回。如果本地dns缓存里没有,则会向全世界的13台根服务器(因为最初部署根dns服务器时,采用的udp协议,其数据包只能容纳13个)发送请求,若有,直接返回。若没有,继续访问".com"的顶级域名服务器,若有,直接返回。若没有,则访问".baid.com"的域名服务器。依此下去,直到找到。

技术分享

 

计算机网络

标签:tcp   不同   厂商   统一   冲突   address   区分   字节   长度   

原文地址:http://www.cnblogs.com/yangzhenwei123/p/6544314.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!