1. VM's Bridge vs NAT (Network Address Translation)
NAT?
-> 네트워크 자원 절약 및 보안 강화를 위해 IP 주소 변환 시 사용하는 IP 주소 변환 기술
Host내부에 NAT 테이블이 존재하고, 기록한다. 데이터를 송신할 때는 Host의 IP로 다른 호스트와 통신하고 데이터를 수신할 때에는 Host가 우선 데이터를 받고 NAT 테이블을 참조하여 Guest에게 데이터를 송신한다.
Bridge?
-> AP에 가상 IP를 직접 할당받는 형태
따라서 Bridge -> NAT는 가능하지만, NAT -> Bridge는 직접적으로 불가능 하다 (NAT 호스트 단에서의 포트포워딩이 필요하다)
왜냐하면 Bridge입장에서는 NAT를 찾을 수 없으므로
2. UDT (User Datagram Protocol)
호스트 안에서의 프로세스 식별을 통한 데이터 전송을 수행하는 프로토콜
TCP가 프로세스 A의 포트 A'와 프로세스 B의 포트 B'를 신뢰성 있게 연결해주는 반면 UDP는 그저 "포트와 프로세스를 연결해주는 프로토콜"이라고 정리하면 될 것 같다.
IoT에 자주 사용된다 한다.
TCP vs UDP
TCP
연결 지향
신뢰적인 데이터 전송 (ACK를 통한 전송확인)
순차적인 데이터 전송 (Seq)
상대적으로 큰 헤더 사이즈
흐름제어 및 혼잡제어 제공
UDP
비연결형
성공적인 데이터 전송을 보장하지 않음
순차적인 데이터 전송을 보장하지 않음
상대적으로 작은 헤더 사이즈
흐름 제어 및 혼잡 제어를 하지 않음 (원한다면 App layer에서 별도로 구현되어야 함)
UDP 해더 구조
TCP보다 상대적으로 단순한 구조를 띄고있다.
UDP 프로그램 구현
UDP 구현 특징
연결 설정을 하지 않는다 -> connect()함수가 불필요 하다 (하지만 사용할 수도 있다)
신뢰성 있는 데이터 전송을 보장하지 않는다 -> 필요하다면 응용프로그램 수준에서 이를 별도로 구현해야 함
다자 간 통신을 쉽게 할 수 있다 (다수의 Client <-> 하나의 Server IP, Port)
UDP를 이용한 통신 예시
만약 UDP를 사용하는 Server를 Connect함수를 사용하여 구현한다면?
모든 클라이언트로 데이터를 보낼 순 있다
but 연결된 클라이언트로부터의 데이터만 받을 수 있다. -> 하나의 UDP 소켓으로 여러 프로세스들과 통신가능하다는 장점이 사라진다
sendto(), recvfrom()은 호출했을 때만 커널과 연결되고 호출이 종료되면 커널과의 연결이 해제되지만. (대신 연속적인 연결과 해제에 오버해드가 존재)
connect함수는 close함수 호출 이전까지 연결이 지속된다 (연결, 해제에 관한 오버해드는 줄지만 여러 프로세스들과 통신이 가능하다는 장점 X)
'학교 공부 > 네트워크' 카테고리의 다른 글
Multiplexing을 통한 싱글 프로세스의 다중 클라이언트 연결 (0) | 2021.04.14 |
---|---|
세마포어, 뮤텍스를 활용한 공유 자원 제어 (0) | 2021.04.14 |
멀티 쓰레드를 활용한 멀티 클라이언트 TCP 통신 (0) | 2021.04.14 |
멀티 프로세스를 활용한 다중 클라이언트 TCP 통신, 좀비 프로세스 삭제 (0) | 2021.04.11 |