# IP
- IP 주소 구조
▪ IPv4 주소는 OOO.OOO.OOO.OOO 의 형식으로 되어 있다.
▪ 마침표로 구분된 4개의 8비트 필드로 되어 있으며, 각 필드는 1바이트를 나타낸다.
▪ 위 주소는 네트워크부와 호스트부로 나뉜다.
네트워크부는 네트워크에 대한 정보를 호스트부는 네트워크 안 특정 컴퓨터를 지칭하는 정보이다.
▪ 서브넷 마스크(Subnet Mask)는 IPv4 주소에서 네트워크가 어디까지인지 나타내준다.
▪ 옥텟은 8자리 2진수 묶음이다. IPv4 주소는 4개의 옥텟으로 이루어져 있으며, 각 1~4옥텟의 이름을 가진다.
- IP 주소 : 192.168.1.1
- 서브넷 마스크 : 255.255.255.0
- 네트워크 주소 : 192.168.1.0
- 브로드캐스트 주소 : 192.168.1.255
▪ 위 주소에서 서브넷 마스크는 1~3옥텟을 네트워크부로 사용하고 있으며, 따라서 4옥텟은 호스트부로 사용되고 있다.
- IP 주소의 할당과 관리
▪ IP주소의 할당은 각 컴퓨터를 지칭하는 주소인 호스트부를 변경하는 식으로 할당된다.
▪ 아래와 같은 예시에서 호스트부는 컴퓨터에 따라 변경된다. 이 때 호스트부의 번호는 4옥텟, 8자리로 이루어진
2진수가 표현할 수 있는 번호의 시작(0)과 끝(255)를 제외한 번호로 할당이 가능하다.
▪ 0으로만 이루어진 호스트부(시작 번호)는 네트워크 주소로 네트워크 자체를 의미한다. (4번째 옥텟의 8비트 모두가 0) (십진법으로 0)
▪ 1로만 이루어진 호스트부(끝 번호)는 브로드캐스트 주소로 ARP와 같은 기능을 사용하기 위해서 사용한다. (4번째 옥텟의 8비트 모두가 1) (십진법 255)
▪ 따라서 시작 번호와 끝 번호는 IP주소로 할당 할 수가 없다.
- IP 프로토콜의 한계
▪ IP 프로토콜의 한계는 비연결성과 비신뢰성이다.
▪ 비연결성 문제는 패킷을 받을 대상이 없거나 서비스 불능 상태에 빠져도 데이터를 받는 대상의 상태 파악이
불가능하여 패킷을 그대로 전송하는 문제이다.
▪ 비신뢰성 문제는 전송한 패킷에 중간에 오류가 생기더라도 정확하게 전달되었는 지 확인할 수 없는 것이다.
▪ 이러한 한계를 극복하기 위해 TCP, UDP 를 사용한다.
# TCP , UDP
- TCP / IP 4계층 모델
▪ TCP와 UDP는 4계층 모델의 전송계층에서 IP와 애플리케이션을 중개하는 역할을 한다.
TCP / IP 4계층 모델 | 주요 프로토콜 | 역할 |
4. 응용 계층 | HTTP, DNS, FTP ... | 애플리케이션에 맞추어 통신 |
3. 전송 계층 | TCP, UDP ... | IP와 애필리케이션을 중개. 데이터를 전달함. |
2. 인터넷 계층 | IP, ICMP, ARP, RARP | 네트워크 주소를 기반으로 데이터를 전송함. |
1. 네트워크 접근 계층 | Ethernet, wifi | 컴퓨터를 물리적으로 네트워크에 연결해서 기기 간에 전송을 가능하게 함. |
▪ TCP와 UDP의 역할은 다음과 같다.
구분 | TCP | UDP |
서비스 타입 | 연결 지향적 프로토콜 | 데이타그램 지향적 프로토콜 |
신뢰성 | 데이터 전송 표적 기기까지의 전송 보장 | 표적 기기까지의 전송 보장 X |
순서 보장 | 전송하는 패킷의 순서 보장 | 패킷순서 보장 X / 패킷 순서의 보장을 위해서 애플리케이션 계층에서 관리를 필요로 함 |
속도 | UDP보다 느리다 | TCP보다 빠르며, 단순하고 더 효율적. |
▪ TCP는 통신 신뢰성에 관한 기능들이 구현되어 있다.
▪ UDP는 신뢰성보다 높은 속도와 효율성이 특징이다.
▪ 따라서 데이터의 신뢰성이 중요한 애플리케이션에서는 TCP를,
빠른 속도와 실시간 통신이 중요한 애플리케이션은 UDP를 사용한다.
▪ 웹애플리케이션의 HTTP의 경우 모든 데이터를 송수신해야하기 때문에 TCP를 사용한다.
- TCP 3 way Handshake
▪ TCP 3way Handshake는 신뢰있는 데이터 통신을 위해, TCP 방식이 연결을 설정하는 방식이다.
▪ 총 3단계로 이루어진 연결 설정은 다음과 같다.
- SYN : 처음으로 클라이언트는 서버와 연결을 위해 데이터 조각(Segment)를 랜덤으로 설정된 숫자인 SYN(Synchronize Sequence Number)와 함께 서버에게 전송한다.
- SYN / ACK : 서버는 받은 요청을 바탕으로 SYN / ACK 신호 세트를 클라이언트에게 응답한다. 여기서 ACK(Acknowledgement)는 서버가 받은 SYN가 유효한 요청인지 확인하는 것이다.
- ACK : 클라이언트는 받은 ACK를 서버에 재전송하여 신뢰성 있는 연결의 성립을 알린다. 이후 실제 데이터 전송이 시작된다.
- UDP
▪ UDP의 특징은 다음과 같다.
- 애플리케이션의 제어 가능 : TCP의 경우 연결설정의 단계에서 반복적으로 전송되는 데이터로 인해 실시간 전송에 대한 요구가 큰 애플리케이션의 경우 지연률 감소를 위해 일부 데이터의 손실을 감수하는데 이를 보완하기 위해 개발자가 애플리케이션에 추가 기능을 구현할 수 있다.
- 연결설정에 무관 : UDP는 연결 설정 과정이 없기 때문에 지연 없이 빠른 반응속도로 데이터 전송이 가능하다. 또 연결설정 관리를 필요로 하지 않아, 서버에서 더 많은 클라이언트를 수용가능하다.
'개발지 > Today I learn' 카테고리의 다른 글
[0922] CS 지식 - 네트워크 (웹) (1) | 2023.09.22 |
---|---|
[0919] CS 지식 - 네트워크 (네트워크 기술3) (0) | 2023.09.20 |
[0914] CS 지식 - 네트워크 (네트워크 기술) (0) | 2023.09.14 |
[0913] 자바 가상머신 (JVM) (0) | 2023.09.14 |
[0908] 자바 스레드 (스레드 제어) (0) | 2023.09.09 |