general
Port Forwarding
Port Forwarding Port Forwarding 특정 포트로 들어온 패킷을 다른 포트로 바꿔서 다시 전송해주는 작업 NAT의 응용으로, 라우터 및 방화벽 등 네트워크 게이트웨이를 지날 때 수행 이 방법을 통해 방화벽을 우회 가능. ex) 원격에서 윈도우 내의 WSL 연결 라우터/방화벽에서 정보를 확인하고 허락하는 과정을 무시할 수 있기 때문에 보안에 위협이 생김 속도는 빨라질 수 있음 References https://nordvpn.com/ko/blog/port-forwarding-vpn/
read moregeneral
NAT
NAT NAT Network address translation의 약자 IP 패킷이 라우터를 지날 때 IP 주소 및 헤더 정보 (TCP / UDP port 등)를 변경하는 것 패킷에 변화가 생기기 때문에 체크섬을 다시 계산해야 하고, 이 과정에서 성능이 느려질 수 있음 NAT 사용 이유 여러 host가 한 public 주소를 통해 인터넷에 접근 가능하게 해 줌 호스트를 외부에서 볼 때의 IP 주소(public IP)와 내부에서 사용하는 IP 주소(private IP)가 달라짐 한 public IP를 여러 호스트에서 사용하다는 점 때문에 IPv4 주소 고갈 문제를 해결하는 도구가 됨 References https://en.
read moregeneral
DNS
DNS DNS 란 호스트의 도메인 이름과 IP 주소를 서로 변환해 주는 시스템. 네트워크에서 호스트를 식별하는 이름을 도메인 이름이라고 함. DNS는 일종의 분산형 DB 시스템이고, DB를 구성하는 레코드를 resource record (RR)이라고 함. 각 RR은 도메인 이름, IP 주소 및 여러 정보로 구성됨. 도메인 이름 규칙 하나 이상의 label(domain)으로 구성되며, 각 label을 점으로 구분하여 붙여 씀. www.github.com 는 www, github, com 세 개의 label으로 구성. 가장 오른쪽 label을 TLD(top level domain)이라고 함. 예시에서는 com이 됨.
read moregeneral
SSH
SSH SSH란 Secure SHell의 약자. 원격 호스트에 로그인하거나 명령을 실행할 수 있게 해 주는 보안 프로토콜 (및 응용 프로그램). 기존 프로토콜인 Telnet과 달리 암호화 기능이 추가되었으며, 안전하지 않은 네트워크에서도 통신 가능. 기본 포트로 22번을 사용하며, 일반적으로 CLI를 이용. 서버-클라이언트 구조에 기반을 둠. 사용 예시 깃허브에서 원격 저장소에 파일을 push하는 경우. AWS EC2 인스턴스에 명령을 내릴 때. 동작 과정 다음과 같은 과정을 통해 동작하게 됨.
서버 인증 사용자 인증 세션 키를 통해 데이터 통신 서버 인증 사용자가 올바른 서버인지 확인하는 과정.
read moregeneral
Network Layer
Network Layer Network Layer란 Transport layer 아래에 존재하며 host간의 통신 제공. 모든 호스트와 라우터에 네트워크 레이어가 존재.
Forwarding과 routing이라는 두 가지 기능 보유, 각 기능을 수행하는 data plane과 control plane으로 구성.
Forwarding 라우터의 input link에 들어온 패킷을 forwarding table을 통해 적절한 output link로 내보내 주는 기능. HW에서 구현. (Data plane)
Routing 패킷의 경로, 즉 forwarding table을 정해주는 기능. SW에서 구현. (Control plane)
Data Plane 라우터 내부에서 forwarding 기능 수행.
Switching fabric 라우터의 입력 포트와 출력 포트를 연결해 주는 과정.
read moregeneral
Transport Layer
Transport Layer Transport Layer란 Transport layer는 application layer와 network 계층 사이에 위치하는 계층으로, 서로 다른 호스트의 프로세스간의 논리적 통신을 제공.
Multiplexing, Demultiplexing등의 기능을 수행하고, TCP와 같은 연결지향적 프로토콜과 UDP와 같은 무연결 프로토콜을 사용.
Multiplexing / Demultiplexing Multiplexing: Application layer에서 소켓을 통해 받은 데이터를 segment로 만들고, source port 번호와 destination port 번호를 header에 추가하고 network layer에 넘겨주는 작업.
Demultiplexing: Network layer에서 받은 segment의 헤더에 있는 port number를 이용해, segment의 정보를 올바른 port를 가진 소켓으로 넘겨줌.
read more