인터넷 프로토콜과 주소 체계
통신 프로토콜:
OSI 7 계층 프로토콜
인터네트워크: LAN이나 WAN등 독립적인 네트워크를 상호 연결하여 만든 복잡한 네트워크로 인터네트워크를 연결하는 과정이나 방법, 다양한 하드웨어-소프트웨어 기술 필요
인터넷 : 인터네트워크로 구성된 대표적인 네트워크들의 네트워크
i. 미국방성 알파넷이 시초로 연구기관에 보급되며 기능이 확대되었다
ii. 이후 인터넷 기반 프로토콜인 TCP/IP도 생성되었다
인터넷 프로토콜
![[Pasted image 20230405092151.png]]
![[Pasted image 20230405092103.png]]
인터넷 데이터 전송 과정
일반적인 네트워크 계층구조와 같이 송신 측에서 데이터를 캡슐화하고 수신 측에서 캡슐해제한다
캡슐 단위 : 메시지(응용) <--> 세그먼트(전송) <--> 데이터그램(네트워크) <--> 프레임(네트워크 접근)
IP주소 또는 인터넷 도메인으로 표현한다
- IP주소 체계 : 숫자로 이뤄진 컴퓨터가 인식 가능한 주소 체계
- 인터넷 도메인 : 무자로 이뤄진 사람이 인식 가능한 주소 체계
- IP주소와 도메인은 컴퓨터마다 유일하게 배정되며, 인터넷 계층의 IP에서 정의 및 처리한다. 또한 인터넷 주소는 국가별 관리 기관에서 관리하며 IANA, APNIC, KRNIC 등이 있다.
영문자와 .을 혼합해 호스트 컴퓨터의 주소를 표현한 것
최대 256자
숫자와 영문자 조합
하이픈 사용 가능
전 세계적으로 중복되지 말아야함
네트워크 매체를 통해 다른 네트워크로 데이터 전송한다.
이더넷, FDDI, 토큰 링, X.25 등
전달하는 데이터 단위 : 프레임
발신지에서 목적지로 데이터 전송을 담당한다. 주소 지정, 라우팅 기능을 제공한다.
IP, ICMP, IGMP, ARP, RARP 등
전단하는 데이터 단위 : 데이터 그램
IP : 데이터그램을 전송하도록 라우팅 기능 수행하고 경로 설정과 주소 지정을 한다 .
ICMP : IP에서 발생하는 문제를 처리하기 위한 프로토콜. 오류/상황 보고 및 경로 제어 정보 전달 기능 수행
IGMP : 멀티캐스트 기능을 수행으로 수신자 그룹에 메시지를 동시에 전송하는데 사용한다
ARP : IP 주소를 MAC(이더넷) 주소로 변환한다
RARP : MAC 주소(이더넷 주소)를 IP 주소로 변환한다
두 종단 간 연결을 설정한 후 세그먼트 단위 데이터를 전송하는 연결형 프로토콜
응용 프로그램 간 메시지 전달을 위해 포트 번호를 이용하고 다중연결을 허용한다
흐름제어와 혼잡제어를 수행한다
TCP의 연결지향형 방식 = 신뢰성 스트림 서비스
TCP가 상위계층으로 전송하거나 상위 계층에서 TCP로 전송할 때 사용하는 데이터 이동 통로
TCP는 슬라이딩 윈도우를 사용한 피기백 방식 흐름 제어를 지원한다
두 종단 간 연결을 설정하지 않고 데이터를 고속으로 교환하는 비연결형 프로토콜
인터넷 프로토콜의 최상위 계층으로 최종 사용자에게 인터넷 서비스를 제공한다
인터넷에서 하이퍼텍스트 문서를 교환하는데 사용하는 통신 규약
파일을 효율적으로 주고 받기 위한 프로토콜
인터넷을 이용해 컴퓨터끼리 파일을 송수신한다. 송수신을 위해선 원격 호스트 컴퓨터를 이용할 수 있는 권한이 필요하다. 계정 없이도 접속할 수 있도록 anonymous 계정을 제공한다.
원격지에서 컴퓨터를 이용한 가상 단말 기능을 구현하는 프로토콜.
전자우편 서비스를 사용할 수 있는 프로토콜
8비트 정수 4개와 .으로 표현. 총 32비트. 네트워크 번호 + 호스트 번호로 구성
Version은 4bit로 이루어져 있고, IP 프로토콜의 version을 의미한다.
Header Length은 4bit로 이루어져 있고, 헤더의 길이를 의미한다.
IPv4의 헤더 길이는 20 ~ 60바이트의 크기를 가지기 때문에 여기의 값에 4를 곱해주어야 한다.
Type of Service는 8bit로 이루어져 있고, IP 데이터그램의 서비스를 의미한다.
FTP나 DNS, SMTP 같은 서비스의 유형을 알려준다.
Total Packet Length는 헤더와 데이터를 합친 전체 길이를 의미하고, 16bit로 이루어져 있다.
identification는 16bit로 이루어져 있고, 패킷이 전송될 때 구분을 하기 위해서 붙은 식별 번호를 뜻한다.
식별 번호 때문에 IP 데이터그램이 단편화되었을 때 단편화된 데이터그램이 원래 어떤 데이터그램에 속해 있는 지를 알 수 있다.
Flags는 3bit로 이루어져 있고, 프래그먼트 패킷의 상태나 생성 여부를 결정하는 플래그이다.
IP 데이터그램이 단편화됬는지 안됬는지를 나타낸다.
Fragmentation Offset은 조각나기 전 원래의 데이터그램의 바이트 범위를 나타내고, 13bit로 이루어져 있다.
Time-to-live는 데이터을 전달할 수 없어서 소멸되기 이전에 데이터가 이동할 수 있는 단계의 수 즉, IP패킷의 수명을 나타낸다.
총 8bit로 이루어져 있고, TTL이라고도 부른다.
Protocol은 어느 상위계층 프로토콜이 데이터 내에 포함되었는가를 보여주고, 8bit로 이루어져 있다.
Header Checksum은 Header 필드의 오류를 검출하고, 16bit로 이루어져 있다.
Source IP Address는 송신 측의 IP 주소를 나타내고, 32bit로 이루어져 있다.
Destination IP Address는 목적지 IP 주소를 나타내고, 32bit로 이루어져 있다.
Options는 선택사항 옵션이다. 선택사항에 따라 헤더의 크기가 달라진다.
컴퓨터가 인터넷에 접속하려면 고유(공인) IP 주소가 있어야한다. 인터넷에 연결하지 않고 개별적으로 구성한 네트워크에서는 사설 IP를 사용할 수 있다. NAT 서버를 사용하면 사설 IP를 공인 IP로 변환하여 인터넷에 접속할 수 있다. IPv4의 주소 부족 문제를 해결하는 방법으로 사용한다.
헤더와 데이터로 구성되면 헤더 부분에 다양한 정보가 있다
송신지에서 목적지로 패킷을 전송할 때 중간 노드를 경유하여 연결하는 기능
여러 라우팅 알고리즘을 실행하여 라우팅 테이블에 경로 정보 저장
현재 경로가 유효한지 지속적으로 확인하고, 더 좋은 경로 발견 시 대체
라우팅 테이블 : 전송 과정에서 라우터가 경로를 쉽게 찾도록 하는 도구
IP라우팅: 송신지에서 목적지로 패킷을 전송할 경로를 직접 연결하지 않고, 중간 노드를 경유하여 연결하는 기능으로 라우팅을 수행하는 장비는 라우터 이다.
라우팅 프로토콜: 라우터가 경로를 결정하는데 사용하는 규칙
라우팅은 경로결정과 스위칭 기능으로 구성
결정된 경로는 라우팅 테이블에 저장
한 번 결정된 경로는 대부분 라우팅 프로토콜에 따라 결정한 경로가 유효한지 계속 확인
예)
2^32개 주소를 가진 IPv4의 부족 문제로 2^128개 주소가 가능한 128비트 주소 체계
모바일 IP. 단말기가 서브넷 지역을 이동해도 통신이 가능하다.
HA로 도착한 패킷이 터널링 기법으로 FA를 통해 전달하며 작동한다
IPv6의 헤더 구조
![[Pasted image 20230405113452.png]]
IPv6의 헤더 항목
![[Pasted image 20230405113536.png]]
IPv6은 다음 세 가지 주소 유형을 지원합니다.
이동중인 사용자가 언제, 어디서나 장소에 관계없이 통신이 가능한 네트워크에서 필요한 서비스를 제공받을 수 있는 환경을 지원 하는 것이다.
즉, IP 주소를 가진 노드가 이동시에도 연결을 항상 보장하는데 필요한 기술이다.
- FA (Foreign Agent)
: FA (Foreign Agent)는 MN이 현재 위치하고 있는 외부 서브넷에 존재하는 라우터로 MN에게 현재 위치를 나타내는 주소인 CoA
서버와 클라이언트간에 데이터를 신뢰성 있게 전달하기 위해 만들어진 프로토콜이다.
데이터를 전송하기 전에 데이터 전송을 위한 연결을 만드는 연결지향 프로토콜이다.
데이터는 네트워크선로를 통해 전달되는 과정에서 손실되거나 순서가 뒤바뀌어서 전달될 수 있는데, TCP는 손실을 검색해내서, 이를 교정하고 순서를 재조합할수 있도록 해준다.
이것을 TCP 다중화라 한다. 이들 프로세스는 같은 네트워크 인터페이스에서 통신할 수 있으므로 네트워크 인터페이스의 IP 주소로 식별된다. 그러나 한 컴퓨터의 같은 네트워크 인터페이스를 사용하는 모든 프로세스는 공통의 IP 주소를 가지고 있으므로, 네트워크 인터페이스의 IP 주소외에도 더 많은 것이 필요하다. TCP는 TCP를 사용하는 응용프로그램에 포트 번호 값을 연계시킨다. 각 연결은 서로 다른 포트 쌍을 사용하므로, 이 연관성은 원격 컴퓨터의 응용 프로그램 프로세스들 사이에 여러 연결이 존재할 수 있게 한다. 응용 프로그램 프로세스에 대한 포트의 바인딩은 각 컴퓨터에서 독립적으로 처리된다.
- SYN과 ACK 플래그는 다음과 같은 패킷을 나타내기 위해 사용된다.
SYN = 1 및 ACK = 0 연결 열기 패킷
SYN = 1 및 ACK = 1 연결 열기 수신 통지
SYN = 0 및 ACK = 1 데이터 패킷 또는 ACK 패킷
- 연결을 설정하는 절차는 동기화(SYN) 제어 플래그를 이용하며, 3way handshake 라는 세 메시지를 교환하게 된다
![[Pasted image 20230405114807.png]]
UDP는 왜 사용할까? UDP는 TCP와 다르게 흐름제어나 오류제어 등이 없기 때문에 전송 속도를 최대한 빠르게 할 수 있다. 하지만 TCP처럼 신뢰성 있는 전송을 보장할 수 없다. 따라서 신뢰성보다 속도가 중요한 부문에서 UDP를 사용하게 된다. 예를 들어 유튜브 동영상 같은 스트리밍 어플리케이션은 신뢰성보다 속도가 중요하므로 UDP를 사용한다. 또한 DNS나 SNMP도 UDP를 사용한다.
![[Pasted image 20230405115045.png]]