目錄
- 一、TCP與UDP
- 二、基于TCP協議的面向連接的套接字(Internet Socket)
- 1、TCP
- 2、流格式套接字
- 3、SOCK_STREAM有以下特點
- 三、基于UDP協議的無連接的套接字(Datagram Sockets)
- 1、UDP
- 2、資料報格式套接字
- 3、SOCK_DGRAM有以下特點
- 四、接收資料的阻塞問題
- 1、TCP
- 2、UDP
- 五、TCP實作資料上傳
- 1、TCP服務端
- 2、TCP客戶端
- 3、測驗
- 六、UDP實作資料上傳
- 1、UDP接收端
- 2、UDP發送端
- 3、測驗
- 七、網路層的安全問題
- 1、安全問題都有哪些?
- 2、ipidea簡介
- 更多詳見全球領先的互聯網大資料IP資源
- 3、ipidea生成api鏈接,復制鏈接即可應用
- 4、生成代理ip操作使用方式
一、TCP與UDP
TCP(Transmission Control Protocol,傳輸控制協議)協議:負責將要傳輸的檔案分段 進行傳輸,一般用于建立會話 ,其基本特性是可靠傳輸 、流量控制,所謂三握手、四揮手也是基于TCP協議的,
UDP(User Data Protocol,用戶資料報協議)協議:一個資料包就能夠完成資料通信 ,資料包不分段 ,不需要建立會話 ,不需要流量控制 ,屬于不可靠傳輸 , 螢屏廣播 、多播 、廣播都是基于UDP協議,
二、基于TCP協議的面向連接的套接字(Internet Socket)
1、TCP
The Transmission Control Protocol 傳輸控制協議,
2、流格式套接字
我們經常講的套接字也就是Internet Scoket,根據資料傳輸方式,可以將Internet Scoket分為幾種,在使用socket()創建網路連接時,必須告訴它是哪一種資料傳輸方式,簡單來說就是資料傳輸的控制協議,
計算機領域稱之為:流格式套接字(Stream Sockets),在計算機代碼中使用SOCK_STREAM表示,
3、SOCK_STREAM有以下特點
- 可靠的、雙向的通信資料流;
- 資料傳輸是按照順序進行的;
- 資料在傳輸中是準確無誤的,是自帶重發機制的;
- 資料的發送和接收是不同步的,存在緩沖區;
- 流格式套接字的典型應用就是HTTP協議,因為瀏覽器在加載進行決議時必須要資料完整正確,
三、基于UDP協議的無連接的套接字(Datagram Sockets)
1、UDP
User Datagram Protocol 用戶資料報協議,
2、資料報格式套接字
基于UDP協議的無連接的套接字,計算機領域稱之為:資料報格式套接字(Datagram Sockets),計算機代碼中使用SOCK_DGRAM表示,
SOCK_DGRAM是一種高效率、高速度、不可靠的通信資料流,其是基于UDP協議的,不用進行資料校驗,只進行資料傳輸,
3、SOCK_DGRAM有以下特點
- 每次傳輸資料大小有限制;
- 追求高效率、高速度;
- 傳輸的資料可能丟失或者損壞(小概率事件);
- 資料的發送和接收是同步的,也就是存在資料邊界;
- 資料報格式的典型應用就是QQ視頻和語音,因為這兩者的需求是高效率和低延時,同時小概率的丟失資料不會影響整個資料的傳輸質量,
四、接收資料的阻塞問題
1、TCP
如果沒有資料,阻塞Socket就會等,直到有數;
非阻塞Socket回傳WSAEWOULDBLOCK;
如果有資料,有多少就收多少,
2、UDP
如果沒有資料,阻塞Socket就會等;
非阻塞Socket回傳WSAEWOULDBLOCK;
如果有資料,它是會等整個發包到齊,并接收到整個發包,才回傳,
五、TCP實作資料上傳
1、TCP服務端
package com.tcpip;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class TcpServerTest {
public static void main(String[] args) throws Exception {
//1、創建服務
ServerSocket serverSocket = new ServerSocket(9000);
//2、監聽客戶端連接
Socket socket = serverSocket.accept();
//3、獲取輸入流
InputStream is = socket.getInputStream();
//4、檔案輸出
FileOutputStream fos = new FileOutputStream(new File("copy.png"));
byte[] buffer = new byte[1024];
int len;
while ((len=is.read(buffer))!=-1){
fos.write(buffer,0,len);
}
//5、關閉資源
fos.close();
is.close();
socket.close();
serverSocket.close();
}
}
2、TCP客戶端
package com.tcpip;
import java.io.File;
import java.io.FileInputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;
public class TcpClientTest {
public static void main(String[] args) throws Exception {
//1、創建一個socket連接
Socket socket = new Socket(InetAddress.getByName("127.0.0.1"),9000);
//2、創建一個輸出流
OutputStream os = socket.getOutputStream();
//3、讀取檔案
FileInputStream fis = new FileInputStream(new File("01.png"));
//4、寫入檔案
byte[] buffer = new byte[1024];
int len;
while ((len=fis.read(buffer))!=-1){
os.write(buffer,0,len);
}
//5.關閉資源
fis.close();
os.close();
socket.close();
}
}
3、測驗

六、UDP實作資料上傳
1、UDP接收端
package com.tcpip;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
public class UdpServerTest {
public static void main(String[] args) throws Exception {
//1、開放埠
DatagramSocket socket = new DatagramSocket(9090);
//2、接收資料包
byte[] buffer = new byte[1024];
DatagramPacket packet = new DatagramPacket(buffer,0,buffer.length);
socket.receive(packet);
System.out.println(new String(packet.getData(),0,packet.getData().length));
//3、關閉連接
socket.close();
}
}
2、UDP發送端
package com.tcpip;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
public class UdpClientTest {
public static void main(String[] args) throws Exception {
//1、建立一個socket
DatagramSocket socket = new DatagramSocket();
//2、建個包
String msg = "UDP 測驗";
InetAddress localhost = InetAddress.getByName("localhost");
int port = 9090;
DatagramPacket packet = new DatagramPacket(msg.getBytes(),0,msg.getBytes().length,localhost,port);
//3、發送包
socket.send(packet);
//4、關閉資源
socket.close();
}
}
3、測驗

七、網路層的安全問題
1、安全問題都有哪些?
- IP欺騙攻擊
- Smurf攻擊(DDOS攻擊的一種)
- ICMP重定向和不可達攻擊
- IP地址掃描攻擊
2、ipidea簡介
ipidea是一家海外爬蟲代理商,提供海外住宅ip和海外靜態ip,主要是做資料采集的業務,與多個資料采集企業保持長期的合作,它提供9000萬ip資源,可以根據抓取需求自定義設定ip輪換時間,從而避免被網站阻止訪問,支持賬密認證和API提取兩種方式提取ip資源,最重要的是支持免費測驗,
更多詳見全球領先的互聯網大資料IP資源

3、ipidea生成api鏈接,復制鏈接即可應用
普匿或者透明的ip在進行測驗提取ip的同時會浪費大量的時間,最后,可能還會是失效的ip,只是就可以使用代理ip,使用的方式更為的簡單,不論是實用性,穩定性、安全性都可以的到保障,使用IPIDEA進行ip提取使用,

4、生成代理ip操作使用方式
在進行服務器維護或者是自己整的代理ip時,很多的使用在都不會進行維護,因此很多的代理ip出現,代理ip的使用相對來說比較簡單,有問題可以及時的向代理商進行反饋尋找技術人員進行解決,使用爬蟲都是為了快速的完成作業需求,使用代理可以節省作業時間,快速的完成作業,
🍅 Java學習路線配套文章:Java學習路線總結,搬磚工逆襲Java架構師(全網最強)
🍅 基礎推薦:Java基礎教程系列
🍅 實戰推薦:Spring Boot基礎教程
🍅 簡介:Java領域優質創作者🏆、CSDN哪吒公眾號作者? 、Java架構師奮斗者💪
🍅 掃描主頁左側二維碼,加入群聊,一起學習、一起進步
🍅 歡迎點贊 👍 收藏 ?留言 📝

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/382871.html
標籤:java
