반응형
01. 네트워크(Network)
- 2대 이상의 컴퓨터에서 값을 송수신하기 위한 기능
- 인터넷이 없던 시절... 전화선만 이용해 송수신함 ( = PC통신)
- 특정계층 사람들만 전화선을 이용해 값을 송수신함
02. 인터넷(Internet)
- 네트워크 기능을 제공하기 위한 가상의 공간 - 네트워크 관련 약속
- 전 세계의 존재하는 컴퓨터들은 인터넷 공간 속에서 컴퓨터들끼리 값을 주고받음
- 네트워크를 할 수 있는 전용 선이 나옴
- 전세계 모든 사람들이 정보를 주고받을 수 있게 됨
- 정보 공개를 목적으로 인터넷이 만들어짐!
- 현재 네트워크 = 인터넷 이라 볼 수 있음
03. 프로토콜(Protocol)
- 인터넷을 사용하기 위한 네트워크 관련 통신규약
- 굉장히 많은 약속들이 있음..
- 그 중 우리가 알아야 할 프로토콜 :
- IP(Internet Protocol)
- TCP(Transmission Control Protocol)
- UDP(User Datagram Protocol)
- ...
04. 프로토콜(Protocol)의 구조
- 🧡네트워크 계층 > 💛인터넷 계층 (IP) > 💚전송계층(TCP , UDP) > 💙응용계층(FTP, HTTP, SMTP 등)
1) 네트워크 계층
- 네트워크 관련 장치와 관련된 계층
- 하드웨어적인 프로토콜
- 통신장비와 관련된 약속들
🧡이더넷(Ethernet)
- 컴퓨터 ( 호스트 )에서 사용하기 위한 통신장비
- (무선이더넷) : 스마트폰 → 그래서 와이파이나 4G, 5G(무선)로 통신함
- (유선이더넷) : 현재학원컴퓨터 → 그래서 이더넷선(유선)을 연결해 통신함
🧡스위치허브(Switch Hub)
- 호스트(내컴퓨터)와 라우터와 연결하기 위해 만들어진 통신장비
🧡호스트(Host)
- 네트워크를 사용하기 위한 컴퓨터(프로그램)
- 최종 사용자의 응용 프로그램을 수행하는 주체
🧡라우터(Route)
- 네트워크그룹과 네트워크그룹을 연결하기 위해 만들어진 통신장비
- 호스트에서 생성된 데이타를 여러 네트워크를 거쳐 전송함으로써 서로 다른 네트워크에 속한 호스트 간에 데이터를 교환할 수 있게 하는 장비
- 네트워크그룹의 문 (출입문)
- 내컴퓨터가 다른컴퓨터와 직접적인 선으로 연결되어 있는 것이 아니다.
- 우리가 사용하는 우리만의 네트워크 그룹이 있다.
- 그리고 그 네트워크 그룹이 하나의 라우터로 연결되어있다.
- 나 > 학원 > 지역 > 한국 > 해외 → 결국은 해적케이블로 해외까지 모두 다 연결되어있다.
- 물론 근처에서는 무선으로 이용가능하다 (무선공유기)
- 하지만 모든 것은 유선으로 연결되어있다. 그리고 각각의 통신장비는 IP주소가 있어서 서로 통신이 가능해지는 것이다.
2) 인터넷 계층 (IP)
💛IP(Internet Protocol)
- 인터넷을 사용하기 위한 네트워크 주소(IP주소)에 대한 통신규약
- IPV4, IPV6
- IP주소 = 인터넷 프로토콜에 의해 만들어진 네트워크 주소
- 🔥주의) Internet Protocol주소라는 뜻이 아님ㅠ
💛IP주소(IP Address)
- 인터넷을 사용하기 위해 컴퓨터에 부여하는 네트워크 식별자
💛IPV4 : 32Bit를 이용하여 IP주소 표현 (예시 210.181.1.24)
- IP라고도 부름 (현재까지 잘 이용하는 IP주소)
- 32비트를 8비트로 나눠서 10진수 0~255 범위의 정수값 4개를 . 으로 구분하여 표현
- IPV4 프로토콜 약 42억개의 IP주소 만들 수 있음
💛IPV6 : 128Bit를 이용하여 IP주소 표현 (예시 0:0:0:0:0:0:0:0)
- 16진수 0000 ~ FFFF 범위의 정수값 8개를 : 으로 구분하여 표현
- 장점) 32Bit IP주소를 확장해 이용함
💛공인IP주소
💛사설IP주소
- VPN 장비를 이용하여 여러대의 컴퓨터가 하나의 IP주소를 공유하는 것
- VPN장비가 있기 때문에 인터넷에 접속이 가능해진 것!
- 인터넷과 연결이 아닌, 네트워크 그룹 내에서 사용하기 위해 만들어짐(내부 네트워크 통신망)
//사설IP주소
//고정IP(10) + //호스트에게 부여하는 사설IP(0.0.0 ~ 255.255.255)
A Class: 10.0.0.0 ~ 10.255.255.255
//고정IP(172.16 ~ 172.31) + //호스트에게 부여하는 사설IP(0.0 ~ 255.255)
B Class: 172.16.0.0 ~ 172.31.255.255
//고정IP(192.168.0 ~ 192.168.255) + //호스트에게 부여하는 사설IP(0 ~ 255)
C Class: 192.168.0.0 ~ 192.168.255.255
//이 외는 모두 공인IP주소
//로컬 호스트 사설IP주소 예시
//1.
//내 호스트 IP주소 예시
192.168.13.31 // 255.255.255.0 라면?
192.168.13.0 ~ 192.168.13.255 접속 가능함
(라우터 거치지 않고) 192.168.13.100 <--> 192.168.13.31 서로 접근 가능
(라우터 통신장비 거쳐야함) 192.168.13.31 <--> 210.181.1.24 직접 접근 불가능
//2.
//내 호스트 IP주소 예시
210.181.1.25 // 255.255.255.192 라면?
//PC방 256-192 = 64 , 64개 아이피 부여함
//네트워크룹 내
//네트워크그룹자체가 ip (네트워크주소) -1
//브로드캐스트 ip (브로드캐스트주소) -1
//gateway ip (라우터가 가진 게이트웨이주소) -1
//64 - 3 = 61개의 호스트 이용 가능
💛Netmask주소(Netmask Address)
- 네트워크 그룹(SubNet)을 표현하기 위한 주소
- 서브넷 마스크
- 라우터를 통과하지 않고도 데이타를 주고받을 수 있는 컴퓨터들의 집합체
- 만약, 서브넷을 벗어나게 되면 라우터에 부여된 IP주소(Gateway주소)를 가지고 접근 가능
A Class(255.0.0.0 - 16,777,216대 : 0.X.X.X~127.X.X.X)
//256개의 3승 -KT, SK통신망
//다른 네트워크 그룹에 가지 않아도 내부적으로 256개의 3승 대들이 서로 값을 주고받을 수 있음
B Class(255.255.0.0 - 65,536대 : 128.X.X.X~191.X.X.X)
//256개의 2승 - LG통신망
//다른 네트워크 그룹에 가지 않아도 내부적으로 256개의 2승 대들이 서로 값을 주고받을 수 있음
//ex. 학원 전체
C Class(255.255.255.0 - 256대 : 192.X.X.X~233.X.X.X)
//다른 네트워크 그룹에 가지 않아도 내부적으로 256대들이 서로 값을 주고받을 수 있음
//ex. 학원의 우리 강의실끼리
D Class
Super Class .. 등
//예시
사설IP주소: 192.168.0.1
B Class이용중: 255.255.0.0
//다른 네트워크 그룹에 가지 않아도 내부적으로 192.168.0.0 ~ 192.168.255.255 범위의 컴퓨터들끼리 서로 값을 주고받을 수 있음
사설IP주소: 192.168.0.1
A Class이용중 : 255.0.0.0
//다른 네트워크 그룹에 가지 않아도 내부적으로 192.0.0.0 ~ 192.255.255.255 범위의 컴퓨터들끼리 서로 값을 주고받을 수 있음
💛Gateway주소(Gateway Address)
- 라우터에 부여된 IP주소
💛도메인(Domain)
- 인터넷을 사용하기 위해 네트워크 그룹 또는 호스트에게 부여하는 문자화된 네트워크 식별자
- 반드시 도메인 그룹에 등록되어야 호스트 사용 가능 - 도메인 호스트
- EX) 가이바 사이트에서 도메인 그룹 구매하기
💛DNS Server
- 도메인(Domain)을 IP주소로 변환하는 기능을 제공하는 컴퓨터
- DNS는 도메인 이름과 IP 주소를 서로 변환하는 역할을 함
💛포트번호(Port Number)
- 네트워크를 이용하여 데이타를 전송하기 위한 고유의 통신 경로
- 네트워크를 한다 = 포트를 통해 데이타를 송수신한다
- 네트워크는 반드시 0 ~ 65,535 범위의 포트 중 하나를 선택하여 데이타 전송
- 0 ~ 1023 : Well-Known Port
- 시스템에서 사용하기 위해 약속되어진 포트
- 80 : HTTP -웹사이트
- 443 : HTTPS -보안된 웹사이트
- 25 : SMTP - 메일보내기
- 110 : POP3 - 메일받기
- ...
- 1024 ~ 49151 : 네트워크 프로그램 작성 시 사용 가능한 포트 (응용프로그램에서 사용하는 포트)
- 49152 ~ 65535 : Private Port - 일시적으로 사용하는 네트워크 포트 (우리가 아예 쓸 수 없음)
💛패킷(Packet)
- 네트워크에서 데이타를 전송하기 위한 단위
- 원시데이타로 조금씩 보내면, 데이타 손실이 일어날 수 있으므로 패킷 단위(덩어리)로 보냄!!!
- Java에서는 byte배열로 표현 가능
- 1바이트씩 보낼 수 없으니 바이트배열(원시데이타를 표현하는 자료형)로 묶어서 보냄
- 모든 값들은 패킷단위로 입출력하기 위해 BYTE배열을 이용할 것임
- 객체직렬화도 함께 이용
- 헤더, 데이타, 트렐러 ..
💛방화벽(Firewall)
- 네트워크를 이용한 접속 및 데이타 전송 차단 또는 허용을 위해 사용하는 시스템
- 윈도우 디펜더 방화벽 클릭 >> 개인방화벽을 쓰겠다고 되어있음
- 해제하면 안돼!
- 윈도우는 보안상 매우 취약, 위험함
- 네트워크 프로그램 만들 시 방화벽이 동작되어있으면 정상작동 어려움
- 방화벽 고급설정 클릭 >> 방화벽 우리가 직접 설정함
💛인바우드규칙, 아웃바운드 규칙
- 들어오고 나가고의 규칙 만들기
- 어떤 프로토콜을 쓰는지, 포트는 무엇을 이용하는지, 쓸 수 있는지, 인바운드(들어오는 것)를 허용하는지.. 등 설정 가능함
- eclipse, Java(TM Platfrom SE bunary) 허용이 되어있어야함
3) 전송계층(TCP , UDP)
- 데이타 전송 프로토콜 - TCP vs UDP
- 실제 데이타(값)을 송수신하는 프로토콜
💚TCP(Transmission Control Protocol) - 소켓통신
- 연결형 프로토콜(연결 설정 후 통신 가능)
- 무조건 호스트와 호스트 간의 연결이 필요함
- 두 컴퓨터(호스트) 간의 연결해주는 프로그램도 필요함 - Socket
- 소켓(Socket) 통신 1:1 연결 : 기본적인 전송계층!
- 전송 제어 프로토콜(신뢰할 수 있는 데이타 전송에 대한 통신규약)
- 데이타를 패킷이라는 단위로 묶어서 보냄 (Byte배열)
- 네트워크는 중간에 통신망에 데이타가 손실될 수 있지만,
- TCP는 "10개의 패킷을 보내겠다!"라고 미리 약속함
- 그래서 데이타를 보내다가 중간에 손실되면 확인하고 다시 보냄
- 받는 컴퓨터가 10개를 다 받지 못하면 계속 재전송이 일어남
- 확인하면서 다른 컴퓨터가 해당 데이타(10개 패킷)를 다 받을 때까지 데이타로서 값을 사용할 수 없도록 락을 걸어둠
💚UDP(User Datagram Protocol) - 고속통신
- 비연결형 프로토콜(연결 설정 없이 통신 가능)
- 연결없이 한 컴퓨터는 계~~~속 보내기만함
- 다른 호스트가 받든 말든 신경안씀
- 받으면 UDP이고, 안받으면 그만
- 고속통신 1:many 연결
- 사용자 데이타그램 프로토콜 (신뢰할 수 없는 데이타 전송에 대한 통신규약)
- 일방적인 보냄이기 때문에 재전송 기능 없음
- 중간에 패킷이 없어져도 그냥 그대로 끝
- UDP 필요한 이유 : 네트워크 속도 때문
- TCP는 10개의 패킷이 다 도달할 때까지 락을 걸기 때문에 아무런 작업도 못함.
- 또한, 두 개의 연결이 되어야만 작업가능
- 하지만 UDP는 약속없이 그냥 보내기때문에 데이타가 10개의 패킷을 보내더라도,
- 1개의 패킷 자체가 하나의 데이타로서 활용이 가능함
- TCP는 10개를 다 받아야지 하나의 데이타로서 가치를 가짐
- UDP는 10개를 다 받지 않아도 하나의 패킷도 하나의 데이타로서 처리 가능
💚TCP의 이용
- 일반적인 네트워크 전체 프로그램, + 사진보기 (UDP이용하면 화면 깨져서 보일 수 있음)
- 부가적으로 일부 기능은 UDP 이용 ex) 멀티미디어
💚UDP의 이용
- 실시간으로 데이타를 받아서 처리하는 프로그램
- (멀티미디어 기능 : 동영상재생, 음악재생)
- ex) 유튜브 동영상을 재생하는 기술 - 동영상의 일부만 전달(입력)받아도 동영상 재생 가능!!
- 만약, TCP를 이용했다면, 용량이 큰 동영상은 재생클릭까지 매~~우 오래 기다려야함ㅠ
- ex) 여러 호스트에게 값을 받아야 할 경우
4) 응용계층(FTP, HTTP, SMTP 등)
- 전송계층을 기반으로 생성된 다수의 프로토콜 또는 응용 프로그램 포함
- HTTP 가 가장 중요
- 응용계층에서 사용할 수 있는 TCP, UDP 기반 프로그램들 만들 예정!
반응형
'java > java.net' 카테고리의 다른 글
[java.net] 5. 채팅 서버 프로그램 | 채팅 클라이언트 프로그램 (0) | 2024.07.03 |
---|---|
[java.net] 4. UDP 프로토콜 프로그램 (0) | 2024.07.03 |
[java.net] 3. TCP 프로토콜 프로그램 (0) | 2024.07.03 |
[java.net] 2. IPAddress 클래스 | ServerSocket 클래스 (0) | 2024.07.02 |