ip的概念,什么是端口,tcp,ip,http协议个的作用,网络中如何定位一台机器
Internet Protocol,网络之间互连的协议,IP地址也可以称为互联网地址或Internet地址。是用来唯一标识互联网上计算机的逻辑地址。每台连网计算机都依靠IP地址来标识自己。
计算机与外界交流的出入口。大多数操作系统都支持多程序(进程)同时运行,那么目的主机应该把接收到的数据包传送给众多同时运行的进程中的哪一个呢?显然这个问题有待解决,端口机制便由此被引入进来。
TCP是传输控制协议(Transmission Control Protocol)的缩写,IP地址是互联网协议(Internet Protocol)的缩写。世界上有各种不同类型的计算机,也有不同的操作系统,要想让这些装有不同操作系统的不同类型计算机互相通讯,就必须有统一的标准。TCP/IP是Internet使用的一组协议(Protocol),是目前被各方面遵从的网际互联工业标准。协议有底层和上层之分,底层协议规定了计算机硬件的接口规范,上层协议规定了软件程序必需共同遵守的一些规则以及程序员在写程序时使用的统一标准。TCP/IP有l00多个协议,其中用得最广的是SMTP(电子邮件协议)、FTP(文件传输协议)、TELNET(远程登录协议)。其中最重要的两个协议是传输控制协议TCP(Transmission Control Protocol)和互联协议IP(Internet Protocol)。IP负责信息的实际传送,而TCP则保证所传送的信息是正确的。
HTTP,即超文本传输协议,是 HyperText Transfer Protocol的缩写。浏览网页时在浏览器地址栏中输入的URL前面都是以"http://"开始的。HTTP定义了信息如何被格式化、如何被传输,以及在各种命令下服务器和浏览器所采取的响应。
在TCP/IP协议中IP层主要负责网络主机的定位,数据传输的路由,由IP地址可以唯一地确定Internet上的一台主机。而TCP层则提供面向应用的可靠的或非可靠的数据传输机制,这是网络编程的主要对象,一般不需要关心IP层是如何处理数据的。
socket是如何工作的
<1> 服务器的套接字等待客户端的连接请求
<2> 客户端向服务器发出请求
<3> 接受到客户端请求后,创建新的套接字与客户端通信,而本身继续等待其他客户机的请求
serversocket和socket的关系
服务器套接字通过指定的端口来等待连接的套接字。
Socket类表示套接字。使用Socket时,需要指定待连服务器的IP地址及端口号。
客户机创建了Socket对象以后,将马上向指定的IP地址及端口进行连接尝试。服务器套接字会创建新的套接字,使其与客户端的套接字连接起来,服务器端和客户端的套接字成功连接后,就可以通过彼此的输入/输出流进行通信了。
socket之间通过什么机制进行数据的传输
IO流
程序实例:文件传输
MyClient.java
public class MyClient {
public static void main(String[] args){
try {
Socket socket = new Socket("127.0.0.1",1234);
//socket的数据流
BufferedWriter write = new BufferedWriter(new FileWriter("D:\\t.txt"));
//socket的输入流
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String readline;
while( (readline = reader.readLine())!=null){
write.write(readline+"\r\n");//实现发送一行
write.flush();//buffered是带缓冲的,必须刷新后才能写入
}
write.close();
reader.close();
socket.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
MyServer.java
public class MyServer {
public static void main(String[] args) {
ServerSocket server = null;
try {
server = new ServerSocket(1234);
Socket socket = server.accept();
//得到输出流
BufferedWriter write = new BufferedWriter(new OutputStreamWriter(
socket.getOutputStream()));
//文件输入流
FileReader freader = new FileReader(new File(
"E:\\t.txt"));
BufferedReader reader = new BufferedReader(freader);
String line = null;
//接收一行
while ((line = reader.readLine()) != null) {
write.write(line + "\r\n");
write.flush();
}
freader.close();
write.close();
socket.close();
server.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}