互联网协议

*爱你&永不变心* 提交于 2019-11-29 21:48:39

计算机为了联网就必须规定通信协议 早期的计算机网络 都是有各厂商自己规定
一套协议 IBM\Apple\Microsoft都有各自的网络协议 互不兼容 这就好比一群人
有的说英语 有的说中文 有的说德语 说同一种语言的人可以交流 不同的语言之间就不行了
为了把全世界的所有不同类型的计算机都连接起来 就必须规定一套全球通用的协议
为了实现互联网这个目标 互联网协议簇 就是通用协议标准 Internet 是有inter和net
两个单词I来的 原意就是连接网络的网络 有了internet 任何私有网络 只要支持这个协议I联入互联网
因为互联网协议包含了上百种协议标准 但是最重要的两个协议是TCP和IP
协议 所以 大家吧互联网的协议简称为TCP/IP协议
通信的时候 双方必须知道对方的标识 好比发邮件必须知道对方的邮件地址
互联网上,每个计算机的唯一标识就是IP地址 如果一台计算机同时接入两个或
更多的网络 比如路由器 它就会有两个或多个IP地址 所以 IP地址对应的
实际上是计算机的网络接口 通常是网卡
IP协议 负责把数据从一台计算机通过网络方案是到另一台计算机 数据被分割成一小块一小块
然后通过IP包发送出去 由于互联网链路复杂 两个计算机之间经常有多条线路
因此 路由器就负责决定如何把一个IP包发出去 IP包的特点就是按块发送
途径多个路由 但不保证到达 也不保证顺序到达
IP地址 实际上就是一个32位整数 称为IPV4以字符串表示的IP地址
如 192.168.0.1 实际上是把32位整数按8位分组后的数字表示 目的是便于阅读
TCP协议则是建立在IP协议之上的 TCP协议负责在两台计算机之间建立可靠连接
保证数据包按顺序到达TCP协议会通过握手建立连接 然后对每个IP包编号
确保对方按顺序收到 如果包丢掉了 就自动重发
许多常用的更高级的协议都是建立在TCP协议基础上的 比如用于
浏览器的HTTP协议 发送邮件的SMTP协议
一个TCP报文除了包含要传输的数据外 还包含源IP地址和目标IP地址
源端口 和目标端口 端口有什么作用在两台计算机通信时 只发IP地址
是不够的 因为同一台计算机上跑着多个网络程序 一个TCP报文来了之后
到底是交给浏览器还是QQ 就需要端口号来区分 每个网络程序都想操作西永
申请唯一的端口号 这样两个进程在两台计算机之间建立网络连接就需要各自的IP地址
和各自的端口号
一个进程也可能同时与多个计算机建立连接 因此他会申请很多端口
了解了TCP/IP协议的基本概念 IP地址和端口的概念我们就可以进行网络编程了

Socket编程是网络编程的一个抽象概念 通常我们用一个Socket表示打开了一个网络连接
而打开一个Socket需要知道目标计算机的IP地址和端口号 再指定协议类型即可
客户端
大多数连接都是可靠的TCP连接 创建TCP连接时 主动发起连接的叫客户端
被动响应连接的叫服务器
举个例子 当我们在浏览器中访问新浪时 我们自己的计算机就是客户端
浏览器会主动像新浪的服务器发起连接 如果一切顺利 新浪的服务器接受了我们的连接
一个TCP连接就建立起来的
创建Socket时 AF_INET指定使用IPv4协议 如果要用更先进的IPv6
就指定为AF_INET6 SOCK_STREAM 指定使用面向流的TCP协议 这样
一个socket对象就创建成功 但是还没有建立连接
客户端要主动发起TCP连接 必须知道服务器的IP地址和端口号 新浪网站的IP
地址可以用域名www.sina.com.cn 自动转换到IP地址 但是怎么知道 新浪
服务器的端口号呢
答案是 作为服务器 提供什么样的服务 端口号就必须固定下来
由于我们想要访问网页 因此新浪提供网页服务的服务器必须把端口号
固定在80端口 因为80端口是Web服务的标准端口 其他服务都有对应的标准
端口号 例如SMTP服务是25端口FTP服务是21端口 等待 端口号小于1024
的是Internet 标准服务的端口 端口号大于1024时 可以任意使用
TCP连接创建的是双向通道 双方都可以同时给对方发数据 但是 谁先发
谁后发 怎么协调 要根据具体的协议来决定 例如HTTP协议规定客户端必须
先发请求给服务器 服务器收到后才发数据给客户端
发送的文本格式 必须符合HTTP标准 如果格式没问题 接下来就可以接受新浪服务器返回的数据了


和客户端编程先比 服务器编程就要复杂一些
服务器进程首先要绑定一个并监听来自其他客户端的连接 如果某个客户端
连接过来了 服务器就与该客户端建立Socket连接 随后的通信就靠这个Socket连接了
所以 服务器会打开固定端口比如80 监听 每来一个客户端连接 就创建该Socket
连接.

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!