Linux 网络应用开发(一)之TCP/IP协议族

来源:互联网 发布:php artisan 报错 编辑:程序博客网 时间:2024/05/21 12:42

TCP/IP协议概述

从底层向上层开始介绍:
一,网络接口层
       它是数据包从一个设备的网络层传输到另外一个设备的网络层的方法。网络接口层在发送端将上层的IP数据报封装成帧后发送到网络上;数据帧通过网络到达接收端时,该结点的网络接口层对数据帧拆封,并检查帧中包含的MAC地址。如果该地址就是本机的MAC地址或者是广播地址,则上传到网络层,否则丢弃该帧。
二,网络层
     负责将数据帧转换为IP数据报,并进行必要的路由选择。
三,传输层
     负责端对端的通信会话的连接和建立传输协议根据传输数据的方式而定。
四,应用层
    负责应用程序的网络访问,通过端口号识别不同的应用程序。

TCP/IP协议为一个协议族,其中各层又包含许多其他协议,现在介绍几个各层重要的协议:

网络接口层:
ARP:地址解析协议,将IP地址转换为MAC地址。网络接口层封装上层的IP数据报为以太网包,将用IP地址标记的目的机B转换为用MAC地址标记的目的机B。在A不知道B的MAC地址的情况下,A就广播一个ARP请求包,请求包中填有B的IP(192.168.1.2),以太网中的所有计算机都会接收这个请求,而正常的情况下只有B会给出ARP应答包,包中就填充上了B的MAC地址,并回复给A。A得到ARP应答后,将B的MAC地址放入本机缓存,便于下次使用。
RARP:与ARP功能相反。

网络层:
IPv4,IPv6,ICMP,IGMP不详细介绍啦!

传输层:
TCP:应用程序通过编程调用TCP并使用TCP服务,提供要发送的数据,用来区分接受目的地的目的地址与端口号。
三次握手协议:和指定服务器端口建立连接。第一次握请求端发送同步序列号SYN置1,初始序列号为x的TCP数据包,表明是请求建立连接报文;第二次握手接受端发送SYN,ACK位全部置1,确认号为x+1,序号为y的TCP报文,SYN及ACK为置1表明这是请求应答报文;第三次握手请求端发送确认号为y+1,序号为z的报文。注意TCP协议具有超时重传的特点。
FIN用于释放链接。
UDP:无连接不可靠,比较简单,不做介绍,其主要用于实时性问题的解决如网络视频会议。
应用层:
telnet,ftp。dns等等较简单就不介绍啦!