apple-mint.log
로그인
apple-mint.log
로그인
241028 CS 스터디 정리
apple-mint
·
2024년 10월 28일
팔로우
0
CS study
목록 보기
6/15
3. 네트워크 계층 - IP
1) IP의 목적과 특징
(1) 주소 지정
네트워크 간의 통신 과정에서 호스트를 특정하는 것
IP 주소를 통해 주소 지정이 이루어짐
송신지 IP 주소, 수신지 IP 주소 필드에 송수신지를 식별할 수 있는 IP 주소가 명시됨
IP 주소
수신 주소와 발신 주소
총 4바이트(32비트)의 크기로 구성되며 숫자당 8비트로 표현
10진수 4개로 표기되며 점으로 구분된 하나의 10진수는 옥텟이라고 함
ex. 192.168.0.1 중 192, 168, 0, 1이 하나하나가 옥텟
MAC 주소
수신인과 발신인의 정보
라우터
IP 주소를 기반으로 패킷의 최적 경로를 결정하여 목적지까지 전달하는 네트워크 장비
서로 다른 네트워크에 속한 두 호스트가 네트워크 간 통신을 수행함
IP 패킷을 전달할 최적의 경로를 결정하고 해당 경로로 패킷을 내노는 과정을 라우팅이라고 함
(2) 단편화
데이터를 MTU 이하의 여러 IP 패킷으로 올바르게 쪼개어 보내는 것
일반적인 MTU 크기는 1500바이트로 프레임을 통해 주고받을 수 있는 최대 페이로드의 크기
식별자
특정 패킷이 어떤 데이터에서 쪼개진 패킷인지 식별하기 위해서 사용되는 필드
같은 정보에서 쪼개진 패킷들은 같은 식별자를 공유하므로 이를 통해 단편화되어 전송되는 패킷을 구분할 수 있음
플래그
3비트로 구성된 필드
첫 번째 비트는 항상 0, 나머지 2개의 비트는 DF, MF라고 함
DF: IP 단편화를 수행하지 말라는 의미
MF: 단편화된 패킷이 더 있다는 의미
단편화 오프셋
특정 패킷이 초기 데이터에서 얼마나 떨어져 있는지가 명시된 필드
단편화되어 전송된 패킷을 목적지에서 재조합하기 위해 패킷의 올바른 순서를 나타내는 데에 사용
(3) 신뢰할 수 없는 통신
패킷이 수신지까지 제대로 전송되었다고 보장하지 않는 프로토콜
(4) 비연결형 프로토콜
패킷을 주고받기 전 사전 연결 과정을 거치지 않는다는 것을 의미
2) IP 주소의 구조
하나의 IP 주소는 0~255 범위의 10진수 4개(32비트)로 표기됨
네트워크 주소, 호스트 주소로 이루어짐
네트워크 주소를 표현하는 크기와 호스트를 표현하는 크기가 유동적일 수 있음
(1) 네트워크 주소
네트워크 ID, 네트워크 식별자 등으로 불림
호스트가 속한 네트워크를 특정하기 위해 사용
(2) 호스트 주소
호스트 ID, 호스트 식별자 등으로 불림
네트워크에 속한 호스트를 특정하기 위해 사용됨
(3) 클래스풀 주소 체계
네트워크의 크기에 따라 유형별로 IP 주소를 분류하는 기준
네트워크 주소, 호스트 주소 크기가 유동적일 수 있다는 특성을 고려해 효율적으로 공간을 사용하기 위해 생겨난 개념
D, E는 멀티클래스를 위한 클래스로 실질적으로 A, B, C 클래스를 사용해 크기별로 IP 주소를 분류
A 클래스: 0.0.0.0 ~ 127.255.255.255
B 클래스: 128.0.0.0 ~ 191.255.255.255
C 클래스: 192.0.0.0 ~ 233.255.255.255
(4) 클래스리스 주소 체계
클래스 없이 서브넷 마스크로 네트워크와 호스트를 구분하는 방식
서브넷 마스크
IP 주소상에서 네트워크 주소는 1, 호스트 주소는 0으로 표기한 비트열
서브넷을 구분하는 비트열
서브네트워크
서브넷이라고도 줄여 부르기도 함
IP 주소에서 네트워크 주소로 구분할 수 있는 네트워크의 부분집합
서브네팅
서브넷 마스크를 이용해 원하는 크기로 클래스를 더 잘게 쪼개어 사용하는 것
3) 공인 IP 주소와 사설 IP 주소
(1) 공인 IP 주소
전 세계에서 고유한 IP 주소
인터넷을 비롯한 네트워크 간 통신에서 사용됨
ISP나 공인 IP 주소 할당 기관을 통해 할당받을 수 있음
(2) 사설 IP 주소
사설 네트워크에서 사용하기 위한 IP 주소
외부 네트워크에 공개되지 않은 네트워크
일반적으로 라우터를 통해 할당되므로 LAN 대부분은 사설 네트워크에 해당
IP 주소 공간 중 사설 IP 주소로 사용하도록 예약된 IP 주소 공간 존재
4) IP 주소의 할당
(1) 정적 할당
직접 수작업으로 IP 주소를 부여하는 방식
이를 통해 할당된 IP 주소를 정적 IP 주소라고 함
정적 IP 주소 부여를 위해 IP 주소, 서브넷 마스크, 게이트웨이 주소, DNS 주소 필요
게이트웨이
일반적으로 서로 다른 네트워크를 연결하는 하드웨어적/소프트웨어적 수단
호스트가 속한 네트워크의 외부로 나가기 위한 첫 기본 경로를 기본 게이트웨이라고 함
DNS 주소
호스트가 IP 주소에 대응되는 기억할 수 있는 문자열인 도메인 네임을 토대로 IP 주소를 알아내기 위해 질의하는 서버의 주소
(2) 동적 할당
프로토콜을 통해 자동으로 IP 주소를 부여하는 방식
이를 통해 할당된 IP 주소를 동적 IP 주소라고 함
흔히 DHCP 프로토콜을 많이 사용
사용 가능한 기간이 정해져 있으며 할당받을 때마다 다른 주소를 받을 수 있음
임대 기간이 끝나기 전 임대 갱신을 할 수 있으며 자동으로 2번 수행됨
임대 갱신 실패 시 해당 IP 주소는 DHCP 서버로 반납됨
5) IP 전송 특징의 보완: ICMP
신뢰할 수 없는 비연결 통신이라는 특징을 보완하기 위한 프로토콜
IP 패킷의 전송 과정에 대한 피드백 메시지, 즉 ICMP 메시지를 얻기 위해 사용하는 프로토콜
ICMP 메시지를 통해 패킷이 어떻게 상대방에게 전송되었는지 알려줄 수 있음
ICMP 메시지는 전송 과정에서 발생한 오류 보고, 네트워크에 대한 진단 정보로 유형을 나눌 수 있음
6) IP 주소와 MAC 주소의 대응: ARP
IP 주소는 알지만 MAC 주소는 모르는 상황이 발생할 때 사용되는 프로토콜
IP 주소, MAC 주소를 함께 활용하는 통신 과정에서 동일 네트워크 내에 있는 송수신 대상의 IP 주소를 통해 MAC 주소를 알아내는 프로토콜
ARP 요청 메시지와 ARP 응답 메시지를 통해 이루어짐
IP 주소, MAC 주소 쌍을 기억하기 위해 ARP 테이블 정보를 유지함
4. 전송 계층 - TCP와 UDP
1) TCP의 UDP의 목적과 특징
포트를 통한 프로세스 식별을 목적으로 함
포트 번호를 통해 호스트가 실행하는 프로세스를 식별할 수 있음
(1) 포트 번호
16비트로 표현 가능하며
2
16
2^{16}
2
1
6
, 65536개가 존재
잘 알려진 포트: 0 ~ 1023
등록된 포트: 1024 ~ 49151
동적 포트: 49152 ~ 65535
(2) TCP
신뢰할 수 있는 프로토콜이자 연결형 프로토콜
연결 수립 -> 패킷 주고 받을 때 신뢰성 보장을 위해 상태 관리, 흐름 제어, 오류 제어, 혼잡 제어 등의 각종 기능 제공 -> 종료
패킷의 유실 없는 송수신을 위해 선택
UDP 헤더에 있는 것뿐만 아니라 순서 번호 필드, 확인 응답 번호 필드, 일부 제어 비트가 있음
(3) UDP
신뢰할 수 없는 프로토콜이자 비연결 프로토콜
연결 수립, 종료 단계 거치지 않고 각종 기능 제공하지 않음
빠른 송수신을 위해 선택
UDP 헤더에 송신지 포트, 수신지 포트, 길이 피들, 체크섬 필드가 있음
2) TCP의 연결부터 종료까지
(1) 쓰리 웨이 핸드셰이크
[A->B] SYN 세그먼트 전송
호스트 A가 SYN 비트가 1로 설정된 SYN 세그먼트를 호스트 B에게 전송
세그먼트 순서 번호에 호스트 A의 순서 번호가 포함되어 있음
[A<-B] SYN+ACK 세그먼트 전송
1에 대한 호스트 B의 응답
호스트 B가 ACK 비트와 SYN 비트가 1로 설정된 SYN+ACK 세그먼트를 호스트 A에게 전송
세그먼트 순서 번호에 호스트 B의 순서 번호, 1번에서 보낸 세그먼트에 대한 확인 응답 번호가 포함되어 있음
[A->B] ACK 세그먼트 전송
호스트 A가 ACK 비트가 1로 설정된 ACK 세그먼트를 호스트 B에게 전송
세그먼트 순서 번호에 호스트 A의 순서 번호, 2번에서 보낸 세그먼트에 대한 확인 응답 번호가 포함되어 있음
액티브 오픈
1번과 같이 처음 연결을 시작하는 과정
주로 클라이언트에 의해 수행
패시브 오픈
2번과 같이 연결 요청을 수신한 뒤 그에 대한 연결을 수립하는 과정
주로 서버에 의해 수행
(2) 재전송을 통한 오류 제어
송수신 과정에서 잘못 전송된 세그먼트가 있을 경우 이를 재전송해 오류를 제어
중복된 ACK 세그먼트가 도착했을 때 또는 타임아웃이 발생했을 때 잘못 전송된 세그먼트가 있음을 인지함
(3) 흐름 제어
수신 호스트가 수신 윈도우 필드를 통해 송신 호스트에게 한번에 받아 처리할 수 있을 만큼 전송하는 것
송신 호스트가 수신 호스트의 처리 속도를 고려해 송수신 속도를 균일하게 맞추는 기능
(4) 혼잡 제어
많은 트래픽으로 인해 패킷의 처리 속도가 느려지거나 유실될 수 있는 상황을 제어
혼잡 없이 전송할 수 있을 정도의 양의 값인 혼잡 윈도우 값을 고려하며 혼잡 윈도우의 값을 넘지 않는 선에서 전송하며 제어
혼잡 윈도우 크기를 연산하는 방법인 혼잡 제어 알고리즘 중 AIMD를 기본적으로 사용함
(5) TCP의 종료
[A->B] FIN 세그먼트 전송
호스트 A가 FIN 비트가 1로 설정된 FIN 세그먼트를 호스트 B에게 전송
[A<-B] ACK 세그먼트 전송
1에 대한 호스트 B의 응답
호스트 B가 ACK 세그먼트를 호스트 A에게 전송
[A<-B] FIN 세그먼트 전송
호스트 B가 FIN 세그먼트를 호스트 B에게 전송
[A->B] ACK 세그먼트 전송
3에 대한 호스트 A의 응답
호스트 A가 ACK 세그먼트를 호스트 B에게 전송
액티브 클로즈: 먼저 연결을 종료하려는 호스트에 의해 수행되는 동작
패시브 오픈: 연결 종료 요청을 받아들이는 호스트에 의해 수행되는 동작
3) TCP의 상태 관리
TCP는 현재 어떤 통신 과정에 있는지 나타내는 정보인 상태를 유지하고 관리함
스테이트풀 프로토콜이라고도 함
(1) 연결이 수립되지 않을 때 주로 활용되는 상태
CLOSED
LISTEN
(2) 연결 수립 과정에서 주로 활용되는 상태
SYN-SENT
SYN-RECEIVED
ESTABLISHED
(3) 연결 종료 과정에서 주로 활용되는 상태
FIN-WAIT-1
CLOSE-WAIT
FIN-WAIT-2
LAST-ACK
TIME-WAIT
apple-mint
팔로우
이전 포스트
241024 CS 스터디 정리
다음 포스트
241104 CS 스터디
0개의 댓글
댓글 작성