프로토콜의 이해
프로토콜이란, 서로 다른 시스템에 있는 개체 간의 성공적으로 데이터를 전송하는 통신 규약이다.
(두 시스템 간에 무엇을, 언제, 어떻게 통신할 것인지 미리 정해 놓은 약속)
프로토콜은 계층적 구조로 정의, 예를 들어 편지 배달 과정에서의 단계는 아래와 같다
- 편지를 써서 우체통에 넣는다
- 편지를 우체부가 수거해간다
- 편지를 지역별로 구분한다
- 지역별로 차량에 편지를 싣는다
이처럼, 계층적 구조로 복잡한 상호 작용을 세분화 하여 이해하기 쉽게 만든다.
인터넷 표준 프로토콜
네트워크는 서로 다른 기종의 컴퓨터로 구성되어 있어, 네트워크 간에 공통으로 사용할 수 있는 프로토콜의 필요하다.
→ 이를 위해 인터넷에서 컴퓨터 간의 통신이 가능하도록 표준화 하여 채택한 통신 규약이 TCP/IP이다
TCP/IP(Transmission Control Protocol / Internet Protocol)
- IP : 패킷으로 변환된 데이터를 네트워크를 통해 목적지에 있는 호스트로 전송
- TCP : 전송된 패킷에 오류가 발생하면 재전송을 요청하고, 재전송 된 패킷에 오류가 없을 경우 원래 데이터로 재구성
즉 이 두가지 프로토콜로 인해, 데이터 흐름의 정확성을 보장한다.
(IP는 데이터 전송, TCP는 흐름제어 및 정확도 보장)
TCP/IP 의 프로토콜 구조
TCP/IP의 프로토콜은, 네트워크 접속 계층, 네트워크 계층, 전송 계층, 응용 계층으로 구분된다.
- 네트워크 접속 계층 : 물리 계층 + 데이터링크 계층, 다양한 운영체제 및 드라이버 지원
- 네트워크 계층 : IP 프로토콜을 사용하여 데이터를 목적지에 전다
- 전송 계층 : TCP와 UDP를 사용하여 데이터 전송 제어
- 응용 계층 : 사용자와 직접 상호작용하는 응용 프로그램 포함
네트워크 접속 계층
- 물리 + 데이터링크 계층을 특별히 정의 X
- 다양한 모뎀이나 네트워크를 지원하며, 송신측 컴퓨터는 패킷을 프레임으로 변환하고, 수신 측 컴퓨터는 이를 다시 원래 데이터로 재구성한다.
네트워크 계층
- 네트워크 계층은 인터넷 계층이라고도 불린다. IP, ARP, ICMP 등의 프로토콜로 패킷 전송 제어 → 데이터를 정확한 주소로 전송하는 역할을 한다.
- IP 주소를 기반으로 송신자와 수신자의 주소를 포함한 데이터 전송 관리
- 송신 측에서는 데이터에 송신지, 수신지 MAC 주소 및 여러 제어 필드를 헤더에 추가하여 데이터 전송
전송 계층
- 전송 계층은 호스트 간 데이터 전송을 담당하는 계층
- 송신측에서 데이터를 패킷 단위로 분할, 수신 측에서는 데이터를 재결합
- TCP, UDP 프로토콜을 헤더에 사용하여 신뢰성 있는 전송 기능 제공
- 만약 수신 받은 패킷이 TCP 헤더이면, TCP 프로토콜로 데이터를 재결합, UDP 도 헤더가 UDP 면 UDP 프로토콜로 패킷 재결합
- TCP : 신뢰성 있는 전송
- UDP((User Datagram Protocol) : 비연결형 프로토콜 → 빠른 데이터 전송 목표 하지만 오류 검사는 하지 않는다
좀 더 자세히..
TCP 헤더에는 패킷의 일련번호등의 추가 정보를 포함하여 전송 되지 않은 패킷이 있으면 재전송하여 원본 데이터와 일치하는 데이터를 재결합
UDP 헤더에는 정확한 패킷 전송을 보장하지 않는다 → 즉 헤더 부분에 추가 정보가 없다.
그래서 전송되지 않는 패킷이 있어도 이를 무시하고 패킷이 도착하는 순서대로 데이터를 재결합 하기 때문에, 원본과 데이터의 재결합을 보장하지 않는다
응용 계층
- 사용자가 직접 사용하는 프로그램들이 속하는 계층(메일, 웹)
- 클라이언트 / 서버 시스템이 대표적
TCP/IP 주소의 구조
물리 주소 (MAC 주소)
- 네트워크 카드에 할당된 고유의 6바이트 크기의 주소
- ipconfig/all 명령어로 확인 가능
인터넷 주소 (IP)
- 물리주소와는 별개로 호스트를 식별할 수 있는 유일한 주소를 지정해야한다.
- 한 예로, 163.152.19.114 (IPv4)와 같은 IP 주소가 있다.
포트 주소
- 네트워크 통신에서 각 프로세스를 식별하기 위한 번호
데이터 전송 과정
송신 측에서 데이터는 각 계층을 겨치며 헤더가 추가 되어 전송되고, 헤더에는 IP 주소와 포트 번호를 추가하여 통신 상대와 정확하게 연결할 수 있으며, TCP를 통하여 데이터가 정확하게 목적지에 도책했는지 확인한다.
네트워크 계층
네트워크 계층의 필요성
- 데이터 링크 계층은 동일한 네트워크에 있는 디바이스들 끼리만 데이터를 전송할 수 있다.(서로 다른 네트워크의 디바이스엔 전송 불가)
- 이런 문제를 네트워크 계층에서 해결 (라우터로 다른 네트워크와 통신)
- LAN 내에서는 MAC 주소만으로 통신이 가능한데, 다른 네트워크 간에는 데이터를 전송하기 위해 IP 주소가 필요하다
네트워크 계층의 역할
- 네트워크 계층은 데이터 전송과 경로 선택을 담당한다.(라우터가 최적의 경로를 찾는 것을 라우팅 프로토콜이라고 한다)
- 데이터 전송시 수신자의 주소를 확인하고, 올바른 전송 계층에 전달
네트워크 계층의 데이터 단위
- 네트워크 계층에서 데이터는 패킷으로 처리
- 패킷에는 송수신지 IP주소를 포함하고 있다
네트워크 계층의 기능
- 논리 주소 지정
- 라우팅
- 주소 변환 : 논리 주소를 해석해 물리 주소로 변환
- 다중화
- 패킷 순서 제어
IPv4
컴퓨터도 집주소 처럼 고유한 식별번호가 있어야 정확한 데이터 송수신이 가능하다.
현재 IP 버전은 IPv4(32비트 주소 체계, 43억개) 와 IPv6이 존재한다.
IPv4는 현재 주소가 고갈 되었기 때문에 인터넷에 직접 연결하는 컴퓨터나 라우터는 공인 IP 주소를 사용하고, 집이나 회사의 LAN에 연결되는 컴퓨터는 사설 IP 주소를 할당한다.
IP 주소는 8비트 크기의 필드 4개를 모아서 구성한 32 비트 논리주소이다
ex) 1000110 = 140 같은 필드가 4개 모여
140.xx.xx.xx. 와 같은 주소로 변환된다.
최대 255.255.255.255 까지 나타낼 수 있는데, 특별 예약 주소와 IP 규정등이 있어 실제 사용 가능한 주소는 한정적이다
숫자로 된 주소 → 문자열 주소 (DNS 서버)
숫자로 사용된 IP 주소는 기억하기 어렵기 때문에, 도메인 이름이라는 별칭을 사용하여 표현한뒤, 사용자가 서버에 접속하기 위해 도메인 이름을 입력하였을 때, 그 도메인에 해당하는 IP 주소를 찾아주는 DNS 서버를 통해 원하는 서버에 접속 할 수 있다.
네트워크 ID 와 호스트 ID
IP 주소는 또한 네트워크 ID 와 호스트 ID로 구분되는데, 네트워크 주소는 네트워크 자체를 나타내는 주소로 다른 네트워크와 구분하는 역할을 한다. 호스트 주소는 해당 네트워크에 속한 컴퓨터의 주소를 나타낸다
IPv4의 클래스 구조
네트워크 규모에 따라 A,B,C,D,E 클래스로 분류 ( A에 가까울 수록 대규모)
- A 클래스 : 대규모 네트워크에 사용, 맨 처음 1비트가 0, 처음 8비트가 네트워크 ID , 그 다음 24비트가 호스트 ID
- B 클래스 : 중간 규모 네트워크에 사용, 맨 처음 2비트가 10, 처음 16비트가 네트워크 ID , 그 다음 16비트가 호스트 ID
- C 클래스 : 소규모 네트워크에 사용, 맨처음 3비트가 110, 처음 24비트가 네트워크 ID, , 그 다음 8비트가 호스트 ID
서브넷
http:// https://youtu.be/WNQh6xsKMiA?si=V-0mjhXk3U5GLly_
이건 그냥 흥달쌤 강의 보면 서브넷 개념부터 서브넷 마스크 개념까지 한방에 정리됨..
IP 프로토콜
- IP는 컴퓨터간에 통신하기 위해 TCP/IP 프로토콜의 네트워크 계층에서 사용하는 프로토콜.
- 데이터가 정상적으로 송수신 되었음을 보장하는 프로토콜인 TCP와 다르게, IP는 정상적으로 데이터가 송수신 되었는지 확인하는 비연결형 프로토콜
- 결정적으로 , TCP(연결형 서비스) 는 패킷의 순서를 보장하고, 원본 데이터와 재결합성이 높은 프로토콜이고, IP(비연결형)는 오류가 발생하더라도 무시하고 데이터를 보내기 때문에, 속도는 훨씬 빠르나, 재결합성, 신뢰성이 낮다.
데이터그램의 구조
= IP 계층의 패킷을 데이터그램이라고 한다.
데이터 그램은 가변 길이이고, 헤더 + 데이터부분으로 구성
- IPv4 헤더는 총 20바이트로 구성되어 있으며, 데이터 전송에 필요한 다양한 정보를 포함하고 있다.
- 버전(4비트): IP의 버전을 나타냄.
- 헤더 길이(4비트): 헤더의 총 길이를 나타냄.
- 서비스 유형(8비트): 패킷의 우선순위 및 서비스 품질을 결정함.
- 전체 길이(16비트): 데이터그램의 전체 길이를 나타냄.
- 식별자(16비트): 패킷을 식별하는 고유 번호.
- 플래그(3비트) 및 단편 오프셋(13비트): 데이터그램이 여러 조각으로 나뉠 때, 그 순서를 식별하고 결합하는 데 사용.
- TTL(라이프타임)(8비트): 패킷이 네트워크를 통해 얼마나 오래 전송될 수 있는지를 결정.
- 프로토콜(8비트): 상위 계층의 프로토콜을 정의(TCP, UDP 등).
- 헤더 검사합(16비트): 전송 중 오류가 발생했는지 검사.
- 송신지 및 수신지 주소(각 32비트): 송신자와 수신자의 IP 주소를 나타냄.
'Computer Science > Network' 카테고리의 다른 글
[Network] 네트워크 계층 프로토콜 (ARP, RARP, ICMP, IGMP) (0) | 2024.11.25 |
---|---|
[Network] 네트워크 계층 - 라우터, IPv6 (0) | 2024.11.24 |
[Network] OSI 참조 모델 (네트워크 접속 계층, 물리 계층, 데이터 링크 계층) (1) | 2024.10.15 |
[Network] 무선 네트워크 (Wireless Network) (0) | 2024.09.27 |
[Network] 광역 네트워크(WAN, Wide Area Network) (0) | 2024.09.27 |