IP (Internet Protocol )
。네트워크( = 인터넷 ) 상 특정 통신 Host를 식별하기 위해 라우터에 의해 식별되는 고유 식별자
ex ) 웹페이지를 호스팅하는 Server Host의 주소
。장치 네트워크 인터페이스를 구별하며 고유값으로 고정된 MAC 주소와 달리 IP 주소는 수시로 변동이 가능
。IP Address는 계층구조이므로 왼쪽에서 오른쪽으로 조사하면서 IP Address에 해당하는 Host가 어느 네트워크에 존재하는지의 정보를 획득가능.
▶ CIDR Block에서 좌측이 네트워크 비트, 우측이 호스트 비트로 구성된 이유
IP 종류
IPv4

。32 bits = 4 byte로 구성된 고정길이의 계층구조를 가지므로 되기 용이함
▶ 216.3.128.12에서 각 0 ~ 255의 1 byte를 .으로 구분하며 약 232 = 43억개가 존재
。현재 전세계에서 거의 전부 사용중이므로 Public IP가 할당된 사설망(Private Network)와 Private Network내에서 통신용도의 Private IP로 구분하여 사용
Public IP
。네트워크 계층에서 라우터에 의해 인터넷 상에서 Host를 식별하는 식별자
Private IP
。Public IP주소에 의해 식별되는 Private Network 내에서 식별하는 식별자
▶ 외부 인터넷과 직접 통신은 불가능하고 NAT을 통해 Private IP주소를 Public IP주소로 변환하여 사용
IPv6

。128 bits = 16 byte로 구성된 고정길이의 계층구조
。IPv4보다 약 296배 더 많으므로 Private IP의 필요성이 존재하지 않음.
ARP ( Address Resolution Protocol )
。IPv4 주소를 기반으로 MAC 주소를 찾는 프로토콜
▶ ARP는 라우터의 Routing Table을 통해 결정된 다음 hop의 IP 주소에 대응되는 MAC 주소를 조회하는 역할을 수행
ARP 원리

。수신 Host의 IPv4 ( = 123.123.1.223 )에 해당하는 Host가 존재하는지 링크 계층 스위치에 Frame을 전송
。이후 스위치에서 네트워크 비트 : 123.123.1에 해당하는 모든 Host에 Broadcast를 수행

。스위치를 통해 송신한 Host에 MAC 주소와 함께 응답
포트 ( Port )

。IP 주소에 해당하는 단일 호스트 내 에서 실행되는 여러 프로세스 中 올바른 프로세스에게 세그먼트를 전달하고자 식별용도의 16비트 숫자 주소( 0 ~ 65535 )
▶ 전송계층에서 수신한 IP 패킷을 역캡슐화하여 도출한 세그먼트의 구성요소
EX ) IP주소:포트번호 -> 127.0.0.1:8080
。 OS - IPC에서 소켓의 파이프 역할을 수행
。 도커 컨테이너에서 Port는 서비스의 단위로 해석할 수 있다
▶ 단일 IP Address를 가지면서 각각 다른 Port를 가지는 다수의 도커 컨테이너를 가질 수 있으므로
。TCP 포트와 UDP 포트로 구분되며 각각 독립적
▶ TCP:80과 UDP:80은 서로 다른 소켓
Well-Known Port
。주로 서버에서 사용하는 어플리케이션 / 프로토콜 별로 사전에 지정되어 고정된 포트
▶ 포트번호가 불규칙적으로 변하면 사용자입장에서 사용이 어려우므로 잘 알려진 포트번호로 고정.
。 0 ~ 1023 포트 까지는 규약으로서 주요 프로토콜이 선점하여 독점적으로 사용
HTTP : 80 / HTTPS : 443 / SSH : 22 / MYSQL : 3306 / 톰캣 : 8080 / React : 3000 / pgsql : 5432 / Vue : 5173
。Default로 설정된 값으로 사용자가 임의로 변경가능.
Ephemeral Port
。클라이언트에서 사용하는 포트번호로 연결 시 마다 임의로 지정
▶ 임시 포트로서 포트번호가 불규칙적으로 변경
。주로 EC2 인스턴스에서 Host로 트래픽을 전송 시 Ephemeral Port로서 임의의 포트를 선택하여 전송.
URI 상 포트번호를 생략해도 되는 경우
。웹 브라우저는 보통 http 프로토콜에 대해서 80 포트, https 프로토콜에 대해서 443 포트로 전송하도록 기본적으로 설정되어 해당 포트로 접근하는 경우 포트번호를 생략하고 IP주소만 입력하여 접근이 가능.
▶ https://www.naver.com:443/ = https://www.naver.com/
▶ http://localhost:80/ = http://localhost/
。단. IP 주소 상 Host의 다른 서비스의 포트번호로 접근할 필요가 있는 경우 별도로 명시
ex ) http://localhost:8080/
소켓에서의 포트
。네트워크 통신을 수행할 각 프로세스는 하나의 소켓을 가진다
▶ 소켓을 생성하는 경우 Port Number가 식별자로서 각각의 소켓에 할당됨

。Socket = IP Address + Port
▶ IP Address 번호와 각 Host의 프로세스를 연결하는 파이프 용도의 Port의 번호를 조합하여 네트워크로 연결된 Host를 식별 후 IPC를 수행
▶ Pipe = Message Box = Port
ex) www.google.com:8080의 경우 도메인 주소를 IP Addrss로 변환 후 식별한 서버컴퓨터에서 Port를 통해 데이터를 요청