http://www.ruanyifeng.com/blog/2012/05/internet_protocol_suite_part_i.html
互联网协议:
实体层:把电脑连接起来的物理手段。它主要规定了网络的一些电气特性,作用是负责传送0和1的电信号;
链接层:确定了0和1的分组方式;
MAC地址:网卡的地址,就是数据包的发送地址和接收地址;
以太网协议:包含mac地址
网络层:建立"主机到主机"的通信;作用是引进一套新的地址,区分不同的计算机是否属于同一个子网络。这套地址就叫做"网络地址",简称"网址";
MAC地址是绑定在网卡上的,网络地址则是管理员分配的,它们只是随机组合在一起;
IP协议:规定网络地址的协议,它所定义的地址,就被称为IP地址;
子网掩码:用于判断两个网络是否在同一个子网下。
IP数据包:根据IP协议发送的数据,其中必定包括IP地址信息;
把IP数据包直接放进以太网数据包的"数据"部分;(分层对好处:上层的变动完全不涉及下层的结构)
ARP协议:得到同一个子网络内的主机MAC地址
传输层:建立"端口到端口"的通信;
端口:每一个使用网卡的程序的编号,用于识别程序;是0到65535之间的一个整数,正好16个二进制位。0到1023的端口被系统占用,用户只能选用大于1023 的端口。不管是浏览网页还是在线聊天,应用程序会随机选用一个端口,然后与服务器的相应端口联系;
UDP协议:在数据前面,加上端口号;
TCP协议:有确认机制的UDP协议,每发出一个数据包都要求确认;
TCP数据包和UDP数据包一样,都是内嵌在IP数据包的"数据"部分;
应用层:应用程序收到"传输层"的数据,接下来就要进行解读;规定应用程序的数据格式;
数据的传递:网络通信就是交换数据包;
MAC地址有局限性,如果两台电脑不在同一个子网络,就无法知道对方的MAC地址,必须通过网关(gateway)转发;
静态IP地址上网:计算机每次开机,都会分到同样的IP地址;
动态IP地址:计算机开机后,会自动分配到一个IP地址;使用的协议叫做DHCP协议;
DHCP协议:一种应用层协议,建立在UDP协议之上;每一个子网络中,有一台计算机负责管理本网络的所有IP地址,它叫做"DHCP服务器"。新的计算机加 入网络,必须向"DHCP服务器"发送一个"DHCP请求"数据包,申请IP地址和相关的网络参数;
DNS协议:帮助我们将网址转换成IP地址;
http:浏览网页用的是HTTP协议;HTTP端口默认是80;发送方(本机)的端口是一个随机生成的1024-65535之间的整数;
TCP/UDP:
(1)连接方式
TCP:需要建立连接,形成传输数据的通道
UDP:不需要建立连接,将数据源和目的封装成数据包中
(2)数据传输的大小
TCP:数据大小不收限制,在连接中进行大数据传输
UDP:每个数据报的大小限制在64K之内
(3)安全性
TCP:通过三次握手完成连接,因此是可靠协议,安全送达
UDP:因为无需连接,因此是不可靠协议
(4)效率性
TCP:必须需要建立连接,所以效率稍微会低些
UDP:不需要建立连接,速度快
iOS一般使用GCDAsyncSocket库可以轻松实现,
GCDAsyncSocket的connect命令直接实现三次握手;