标签:tcp 不同 厂商 统一 冲突 address 区分 字节 长度
目录
当用户拥有一条设备以后,要想与外界交流,则需要将两个或多个这样的设备连接起来,而其中涉及到的路由器、交换机、网线等一系列硬件组成的网络,便是Internet。因不同地方,语言等的差异,要想通过终端设备与他人交流,则涉及到语言的统一标准,而这种标准就是互联网协议的基本雏形。一系列这样的统一标准就是互联网协议。
互联网协议的功能:定义计算机如何接入internet,以及接入internet的计算机通信的标准。
互联网协议按照功能的不同可以分为osi七层或tcp/ip五层或tcp/ip四层。
每层常见的物理设备:
将应用层,表示层,会话层并作应用层,从tcp/ip五层协议的角度来阐述每层的由来与功能,搞清楚了每层的主要协议
孤立的终端要想与他人通信,就必须要有硬件的支持,使它能接入Internet
物理层功能:主要是基于电器特性发送高低电压(电信号),高电压对应数字1,低电压对应数字0
数据链路层的作用:规定电信号的分组方式。
因早期公司都有各自的分组方式,为了统一标准,诞生了ethernet(以太网)
以太网协议内容:
一组电信号构成一个数据报,也叫“帧”,每帧分成:报头head和数据data两部分。
head | data |
head包含:(18个字节)
data包含:(最短46字节,最长1500字节)
一个数据报的长度,最短64字节,最长1518字节,超过最大值则分片发送。
广播:
有了mac地址,就能保证同一网络的两条主机之间的通信(一台主机通过arp协议获取另外一台主机的mac地址)。
以太网采用的就是广播的方式来发送信息,即计算机的通信基本靠吼
用于广播方式过于粗暴,一个人发送信息,所有人都能收到,其产生大量数据使其并不能很好的在世界这个范围来传播信息。于是通过彼此的隔离(路由器来实现的),来使以太网能很好的工作。但局域网中的某一个体与另一局域网中某一个体的通信却不能保障。
网络层便引入新的地址,用来区分不同的广播域/子网,这套地址即网络地址。
常用的网络地址协议就是IP协议。
IP地址分为两部分:网络部分(识别子网)和主机部分(识别主机)。
单靠一个IP是不能识别子网的,它需要子网掩码的协助。子网掩码和IP地址进行位与运算,就能得到网络地址。网络地址就是该IP所在的子网。
IP数据包也分为head和data部分
head:20~60字节
data:最长65515字节
以太网头 | ip 头 | ip数据 |
以太网的每个数据报数据部分,最长只能有1500字节。因此,如果IP数据包超过1500字节,将需要分成多个以太网数据报来发送。
网络层的IP可以帮我们区分子网,以太网的mac可以帮我们找到主机。但当我们开启多个程序时,如何来识别主机上的应用程序,则需要传输层提供的端口功能来完成。
传输层作用:建立端口与端口之间的通信。
ps:端口范围0-65535,0-1023为系统占用端口
传输层常用的协议:tcp和udp协议
tcp是可靠传输,tcp数据包没有长度限制,但为了保证网络传输的效率,通常TCP数据包的长度不会超过IP数据包的长度,以确保单个TCP数据包不必再分割。
以太网头 | ip头 | tcp头 | 数据 |
udp协议:
不可靠传输,”报头”部分一共只有8个字节,总长度不超过65,535字节,正好放进一个IP数据包。
以太网头 | ip头 | udp头 | 数据 |
应用层:用户使用的,程序员开发的数据多种多样,必须规定好数据的组织形式。
应用层功能:规定应用程序的数据格式。
常用的协议:http,ftp,www等,程序员可以在此层编写协议。
两个进程要实现通信,必须保证具有唯一的标识。本地的进程PID唯一,但网络中两个进程PID冲突的概率很高。由于IP地址的唯一性,所以我们用IP地址+协议+端口来唯一标识网络上的一个进程。
唯一标示网络中的一个进程,我们就可以用socket进行通信了。socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象层几个简单的接口供应用层调用以实现进程在网络上的通信。
用户程序发送的用户数据,只要符合应用层的数据规范,会在报头加入所使用的应用层协议,向下通过传输层时,会封装应用程序所调用的端口号和协议,再向下经过网络层时,会封装目标IP和自己IP,再通过数据链路层时,封装自己和目标的mac地址,再通过物理层将数据发送出去。到达目标计算机,会依次一层层解封,最后实现用户与用户的通信。
要想实现网络通信,需要:
获取方式:静态获取(手动获取)和动态获取(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