728x90
네트워크의 기본
@2024.04.22
집(IP) 안에 여러 개의 방(Port)이 존재한다.
IP

💡
인터넷에 연결된 모든 장치에 할당된 고유 주소로 데이터가 올바른 목적지로 전달되도록 도와준다.
IPv4
💡
32bit의 길이를 가지고 2의 32승 개의 IP를 표현한다. (약 43억 개)
- 10진수로 주소를 표기하며, 주소는 8bit씩 3개의 옥텟으로 구성
- IP의 개수 고갈 문제로 IPv6가 등장
- 2의 128승 개
- 16진수로 주소를 표기하며, 16bit씩 8개 필드로 구성되어 있다.
서브넷 마스크
💡
IP 주소에 대한 네트워크 ID와 호스트 ID를 구분해 주는 역할을 수행한다.
- IP 주소 = 네트워크 ID + 호스트 ID
- 네트워크 ID : 하나의 조직, 그룹으로 Host들을 관리하기 위해 사용
- Network 범위를 지정하여 관리
- 호스트 ID : 호스트를 개별적으로 관리하기 위해 사용
- IP Class
- A Class
- 범위: 0.0.0.0 ~ 127.255.255.255
- 기본 서브넷 마스크 : 255.0.0.0 (또는 /8)
- B Class
- 범위: 128.0.0.0 ~ 191.255.255.255
- 기본 서브넷 마스크 : 255.255.0.0 (또는 /16)
- C Class
- 범위: 192.0.0.0 ~ 223.255.255.255
- 기본 서브넷 마스크 : 255.255.255.0 (또는 /24)
- D Class : IPv4 주소 공간에서 멀티캐스트용으로 예약된 클래스
- 범위 : 224.0.0.0 ~ 239.255.255.255
- 서브넷 마스크가 존재하지 않는다.
- A Class
공인 IP
💡
인터넷 사용자의 로컬 네트워크를 식별하기 위해 ISP(인터넷 서비스 공급자)가 제공하는 IP 주소로 외부에 공개되어 있는 IP 주소
- 공인 IP는 전 세계적으로 유일한 IP 주소
- 외부에 공개되어 있기에 인터넷에 연결된 다른 PC로부터 접근이 가능하다. ⇒ 보안 취약
- 방화벽 등의 보안 프로그램 설치 권장
사설 IP
💡
일반 가정이나 회사 내 등에 할당된 네트워크 IP 주소로, 가상 IP 또는 로컬 IP라고도 불린다.
- IPv4의 주소 부족으로 등장한 서브넷팅된 IP
- 외부에서 사설 IP로 직접 접근할 수 없고, 라우터에 1개의 공인 IP가 할당되고, 라우터에 연결된 개인 PC는 사설 IP를 각각 할당받아 인터넷에 접속할 수 있다.
- 라우터에 의해 로컬 네트워크 상의 PC나 장치에 사설 IP가 할당된다.
- 사설 IP 주소 대역
- Class A : 10.0.0.0 ~ 10.255.255.255
- Class B : 172.16.0.0 ~ 172.31.255.255
- Class C : 192.168.0.0 ~ 192.168.255.255
공인 IP | 사설 IP | |
---|---|---|
할당 주체 | ISP(인터넷 서비스 공급자) | 라우터(공유기) |
할당 대상 | 개인 또는 회사 서버(라우터) | 개인 , 회사 |
고유성 | 인터넷상에서 유일 | 하나의 네트워크 안에서 유일 |
공개 여부 | 내/외부 접근 0 | 내부만 접근 0 외부 접근 X |
Port
💡
호스트 내의 특정 프로세스 또는 서비스를 식별하는 번호로, 특정 IP 주소에서 여러 서비스가 동시에 실행될 수 있으므로, 포트 번호는 이러한 서비스를 구분하는 데 사용된다.
소켓 프로그래밍
💡
서버와 클라이언트 간의 연결을 설정하고 데이터 전송을 가능하게 한다.
- 소켓 : 네트워크 상에서 데이터를 주고받기 위한 끝점
- 서버 소켓 : 연결을 수신 대기
- 클라이언트 소켓 : 서버에 연결을 시도
프로토콜
💡
데이터 전송 시 준수해야 할 규칙과 표준의 집합
- 네트워크 프로그래밍에서 주요 사용되는 프로토콜은 TCP와 UDP이다.
TCP(TransmissionControl Protocol)
💡
네트워크 통신에서 가장 널리 사용되는 프로토콜 중 하나
- 데이터의 순서와 신뢰성이 중요한 애플리케이션에 적합
- 웹 페이지 로딩, 파일 전송, 이메일 전송 등
- 특징
- 신뢰성 있는 데이터 전송
- 데이터가 목적지에 정확하고 안전하게 도착하도록 보장
- 잘못된 데이터나 손실된 데이터는 재전송
- 연결 지향적
- TCP 통신을 시작하기 전에 클라이언트와 서버 간에 연결이 설정되어야 한다.
- 이 연결은 통신이 끝날 때까지 유지
- 순서 보장
- 데이터는 전송된 순서대로 도착
- 만약 순서가 바뀌면 원래의 순서대로 재정렬
- 신뢰성 있는 데이터 전송
- 작동 방식
- 3-Way Handshake
- TCP 연결은 3단계로 구성
- 이 과정을 끝으로 양쪽 모두 데이터를 보내고 받을 준비가 되었음을 확인하고 데이터의 전송이 이루어진다.
Client Server | | 1. 클라이언트 -> 서버 : SYN(SYN_SENT) | 1. SYN | - 클라이언트가 서버에 연결을 요청하기 위해 SYN 패킷을 보낸다 |---------------------->| - 클라이언트는 초기 sequence number를 랜덤하게 선택하여 SYN 패킷의 헤더에 포함시킨다. | | | 2. SYN-ACK | 2. 서버 -> 클라이언트 : SYN-ACK(SYN_RECEIVED |<----------------------| - 서버는 클라이언트의 SYN을 받으면, 클라이언트에게 수락이라는 응답하기 위해 SYN-ACK 패킷을 보낸다. | | - 서버는 자체적으로도 랜덤한 초기 sequence number를 선택하여 이를 SYN-ACK 패킷의 시퀀스 번호로 사용합니다. | 3. ACK | - 서버는 클라이언트로부터 받은 SYN 패킷의 sequence number에 1을 더한 값을 ACK 번호로 사용합니다. |---------------------->| | | 3. 클라이언트 -> 서버 : ACK(ESTABLISHED) - 클라이언트는 서버로부터 받은 SYN-ACK 패킷에 대한 확인응답으로서 ACK 패킷을 보낸다. - 클라이언트는 자체적으로도 랜덤한 초기 sequence number를 선택하여 이를 ACK 패킷의 시퀀스 번호로 사용 - 클라이언트는 서버로부터 받은 SYN-ACK 패킷의 sequence number에 1을 더한 값을 ACK 번호로 사용
- 데이터 전송
- 연결이 설정되면 데이터가 작은 단위(세그먼트)로 나누어져 전송된다.
- 연결 종료
- 데이터 전송이 완료되면 연결을 종료한다.
- 3-Way Handshake
UDP(User Datagram Protocol)
💡
인터넷상에서 데이터를 전송하기 위한 다른 방식의 프로토콜로,
TCP와 달리
연결이 없는 프로토콜로, 데이터 전송 시 연결 설정 과정이 없다.
TCP와 달리
연결이 없는 프로토콜로, 데이터 전송 시 연결 설정 과정이 없다.
- TCP보다 빠른 전송이 가능하나, 신뢰성과 순서를 보장할 수 없다.
- 자바에서는 java.net package에 DatagramSoket과 DatagramPack 클래스를 사용하여 구현
- 특징
- 비 연결성
- 연결 설정을 하지 않고, 데이터를 보내는 측에서 받는 측으로 직접 데이터를 전송
- 속도
- 연결 설정이 없기 때문에, TCP보다 전송 속도가 빠르다.
- 비 신뢰성
- 데이터의 도착을 보장하지 않으며, 데이터가 손상되거나 순서가 바뀌어 도착할 수 있다.
- 비 연결성
- 작동 방식
- 데이터는 데이터그램이라는 작은 패킷으로 전송
- 각 데이터그램은 독립적으로 처리되며, 이전의 데이터 그램과의 연관성이 없다.
- 송신자는 데이터그램을 네트워크에 보내고, 수신자는 도착하는 데이터 그램을 수집한다.
- 예시 : 실시간 비디오 스트리밍, 온라인 게임, VolP(음성 통신) 등
728x90