1、计算机网络就是把各个计算机联系到一起,让我网络中的计算机可以相互通信。网络编程就是如何在程序中实现两台计算机的通信。网络通信就是两个进程之间在通信。
2、TCP/IP简介
为了把全世界的所有不同类型的计算机都连接起来,就必须规定一套全球通用的协议,为了实现互联网这个目标,互联网协议簇(Internet Protocol Suite)就是通用协议标准。
因为互联网协议包含了上百种协议标准,但是最重要的两个协议是TCP和IP协议,所以,大家把互联网的协议简称TCP/IP协议。
通信的时候,双方必须知道对方的标识,好比发邮件必须知道对方的邮件地址。互联网上每个计算机的唯一标识就是IP地址,类似123.123.123.123。如果一台计算机同时接入到两个或更多的网络,比如路由器,它就会有两个或多个IP地址,所以,IP地址对应的实际上是计算机的网络接口,通常是网卡。
(1)、IP协议:按块发送,途径多个路由,但不能保证到达,也不能保证顺序到达。负责把数据从一台计算机通过网络发送到另一台计算机,数据被分割成一小块一小块,然后通过IP包发送出去。多条线路时,通常中间还有路由器。
(2)、TCP协议:建立在IP协议智商的。TCP负责在两台计算机之间建立可靠连接,保证数据包按顺序到达。TCP协议会痛过握手建立连接,然后对每个IP包编号,确保对方按顺序收到,如果丢包,就自动重发。
许许多多的协议都是建立在TCP协议基础之上的,比如用于浏览器的HTTP协议和发送邮件的SMTP协议等
一个IP包出了包含要传输的数据之外,还包含IP地址和目标地址,源端口和目标端口。
端口的作用,当一个IP包来了之后,交给哪个跑着的网络程序就需要哪个端口来区分。每个网络程序都向操作系统申请唯一的端口号,这样两个进程在两台计算机之间建立网络连接就需要各自的IP地址和各自的端口号
TCP/IP协议
(1)建构比较简单,只有四层
(2)应用层(HTTP,FTP,DNS)
传输层(TCP,UDP)
网络层(IP、ICMP、IGMP)
链路层(驱动程序、接口)
网络层是TCP/IP协议的核心
IP地址和端口号
(1)每台机子都有标识号,每台机子都会分配一个
IP地址,如果没有分配就不能上网。用的比较广泛的是
使用的IPv4,四段数字,第一位最255,用一个字节存储。
(2)随着网络规模的增加,IP地址资源面临枯竭。出现了IPv6
(3)特殊IP:127.0.0.1表示你自己,谁用代表谁也称为
本机回环地址
(4)通过IP地址找到了计算机,但是不知道是怎么通信
想要传输数据必须得知道端口号,不属于物理段端口(USB)
属于逻辑端口,由操作系统进行分配。
源计算机====》目标计算机===》不同端口号的应用程序
范围是0-65535 1024之前的端口号不能用,已被操作系统的
程序占用了。每个端口号上只能有一个应用程序
InetAddress
(1)提供了n多方法对ip地址进行操作。表示互联网中
的ip地址,java,net.InetAddress,不能new,调用静态方法
(2)getLocalHost()获取本地主机
getHostname()获取主机名
getHostAddress()获取IP地址
相当于帮你自己切割了第一个方法返回的字符串
getByName(String hostname)拿别人的ip
括号里面写主机名,可能会重复,推荐些ip地址
UDP与TCP协议
(1)UDP特点:是无连接通信协议,不能保证完整性和安全性发送端不会
确认接收端在不在,接收方也不会反馈,消耗资源少,通信效率高,
比如视频会议关键点不管对方在不在线,不害怕丢数据。
面向无连接,数据在64k以内。大了不安全,有隐患。
(2)TCP协议:面向连接协议,提供了两台计算机之间无差错的
可靠的连接,必须经过三次握手,必须确认连接,连接速度比较慢
但是为了安全,牺牲速度也理所应当。