第一章 TCP/ IP网络起源
在计算机出现后,人们希望计算机之间可以沟通和分享,为保证秩序,需要一个一致遵守的协议。
1974年TCP/IP被提出,TCP(传输控制协议)描述如何在网络上建立可靠的,主机对主机之间的数据传输服务,IP(Internet协议)描述如何在互联的网络之间实现寻址的标准以及如何进行数据包路由。
1984年美国国防部将TCP/IP作为所有计算机网络的标准
1989年万维网出现,TCP/IP网络大发展时代开始
IP世界是由通信实体组成的,而通信实体要分层以避免混乱。
1. OSIRM开放系统互连参考模型
这是一套分层结构
从底往上七层 |
数据格式 |
典型设备 |
应用层application |
|
|
表示层 |
|
|
会话层 |
|
|
传输层 |
数据组织成数据段segment |
网关,协议转换器 |
网络层 |
分割和重新组合数据包packet |
路由器 |
数据链路层 |
将比特信息封装成数据帧frame |
网桥,交换机,网卡 |
物理层 |
传输比特流bit |
光纤,同轴电缆 |
物理层解决最基础的传送通道问题,
数据链路层将物理层提供的比特流组成帧,要提供一定的纠错和检验机制,以太网就属于这一层
网络层进行路由选择,拥塞控制和网络互联,还有统计与控制。网络层对传输层有两种服务,一种叫面向连接的网络服务,一种叫无连接
传输层的任务,是向用户提供可靠的,透明的端到端的数据传输,以及差错控制和流量控制机制,TCP UDP属于传输层
会话层在不同的机器之间提供会话进程通信
表示层处理通信进程之间交换数据的表示方法,包括语法转换,数据格式的转换加压与减压,压缩与解压缩等
应用层负责管理应用程序之间的通信
2. TCP/IP
相对于OSI模型,TCP/IP的模型层级要少,从上到下依次是应用层,传输层,互联网层(也称网络层),网络接口层(对比以上七层)
网络接口层也称为数据链路层,只是要求能够提供给网络层一个访问接口
网络层俗称IP层,处理机器间的通信,IP是一个不可靠的无连接协议
TCP UDP是传输层的重要协议,TCP是面向连接的可靠的协议,UDP是不可靠的,无连接协议,主要适用于不需要对报文进行排序和流量控制的场合
3.TCP报文格式
TCP报文包括首部和数据部分。
标志位有六个
紧急比特URG=1时,表明此段数据优先级高,应尽快传送
确认比特ACK=1时确认号字段才有效
推送比特PSH=1时应尽快交付给接收应用进程,而不再等到缓存填满后再向上
复位比特RST=1时表明tcp连接中出现严重差错,必须释放连接,然后再重新建立运输连接
同步比特SYN=1表示这是一个连接请求或连接接受报文
注意确认序号ACK不同于标志位中的ACK,确认方ACK=发起方SEQ+1
4.tcp的三次握手和四次挥手
tcp建立需要三次握手才能成立,断开连接,需要四次挥手
三次握手:第一次握手:client向server发送一个连接请求,标志位SYN=1,发送序号SEQ=x,client等待server确认
第二次握手:server收到数据包后由标志位SYN=1知道client请求建立连接,server将标志位SYN和ACK都设为1,确认序号等于ACK=x+1,随机产生一个发送序号SEQ=y,并将该数据包发送给client以确认
第三次握手:client收到确认后,检查确认序号ACK是否=x+1,标志位ACK是否=1;如果正确,则将标志位ACK设为1,确认序号ACK设为y+1,并将该数据包发送给server,server检查了两个ACK后如果正确就建立连接
四次挥手来终止TCP连接,总共发送4个包
第一次:客户A要断开连接时,发送一个包,标志位fin=1,ACK=1,发送序号SEQ=x,确认序号ACK=y
第二次:客户B知道A要断开后,发送一个确认包,标志位ACK=1发送序号SEQ=y,确认序号ACK= x+1
第三次:客户B也要断开TCP连接,此时发送包标志位fin=1,发送序号SEQ=y+1
第四次:A收到B的请求后,发送确认包,标志位ACK=1,发送序号SEQ=x+1,确认序号ACK= y+2
TCPIP与互联网
互联网包含因特网,因特网包含万维网
国际标准的互联网是internet i小写
国际标准的因特网是Internet i大写
凡是有能彼此通信的设备组成的网络就叫互联网,即使仅有两台机器。因特网是互联网中的一种,是由上千万台设备组成的网络,因特网提供的服务一般包括万维网,电子邮件,远程登录服务,文件传输服务等只要应用程序使用的是http,就称为万维网。