theo lý thuyết thì mạng máy tính được thiết kế theo mô hình osi 7 tầng ,
theo như hình trên thì , 1 lập trình viên phần mềm có thể can thiệp và thay đổi dữ liệu ở những tầng nào ?
theo như mình đọc ở topic này https://stackoverflow.com/questions/8141118/jnetpcap-preparing-udp-tcp-ip-icmp-packet
thì 1 library của java cho phép mình tạo 1 raw packet để gửi qua mạng là jnetpcap , cho phép mình tạo 1 packet và tùy chỉnh các thông tin như tcp header ở layer4 , ip header ở layer3 , Ethernet frame ở layer2 , vậy có phải ngoại trừ layer1 là tầng vật lý ra thì lập trình viên phần mềm có thể can thiệp vào việc tạo packet ở tất cả các tầng phải không?
nếu kết luận trên là đúng thì, có phải các thư viện được tạo sẳn để lập trình viên dùng trong lập trình mạng , như http , socket đều thực chất là tự động thêm các thông tin cần thiết vào gói tin để tạo 1 gói tin hoàn chỉnh trước khi gửi đi qua mạng ? hay là việc thêm các thông tin đó được đảm nhận bởi phần cứng khác ( card mạng ), hoặc các phần mềm khác của hệ thống ?
1 câu hỏi ngoài lề nữa , làm thế nào để ép tất cả các chương trình đang hoạt động trên máy tính phải chạy qua 1 proxy hoặc 1 vpn định sẳn của mình , vd: mình có xem qua soft proxifer thấy nó tạo ra 1 proxy server và ép các process mình chọn trước khi chạy qua card mạng thì sẽ phải chạy qua cái proxy của nó , và mình cũng biết được cách của nó là nó hook dll vào process và thông ws2_32 để điều hướng theo đúng ý của nó , tuy nhiên cách này có hạn chế là nếu gặp chương trình nó chống inject dll thì ko dùng được
,còn cách hoạt động của vpn thì mình ko biết ai có thể giải thích hoặc có các tài liệu giải thích cho mình tham khảo đc không?