서버에서 파일 데이터를 클라이언트 프로세스로 전송하는 흐름을 간략히 정리했다.
캡슐화는 송신자가 수신자에게 데이터를 보낼 때 각 계층을 지나며 계층의 특징들이 담긴 헤더가 붙여지는 과정
비캡슐화는 캡슐화 과정의 역과정으로, 수신자측에서 캡슐화된 데이터를 까면서 응용계층까지 도달하는 것을 의미
Protocol Data Unit 의 약자로 헤더 + 데이터
를 뜻함
애플리케이션 계층 : 메시지(데이터)
전송 계층 : 세그먼트(TCP), 데이터그램(UDP)
인터넷 계층 : 패킷
링크 계층 : 프레임(데이터 링크 계층), 비트(물리 계층)
(Maximum Transmission Unit) 네트워크를 통신할 때 할 수 있는 가장 큰 PDU크기
이 크기를 기준으로 데이터가 쪼개져서 패킷화 된다.
네트워크 경로 상에 있는 장치중에 MTU보다 패킷이 크면, 패킷은 분할될 수도 있다.
MTU는 IP헤더와 TCP헤더의 크기까지 합치지만, MSS(Maximum Segment Size)는 데이터의 크기만을 의미한다.
IPv6에서 출발지 장비가 패킷을 알맞게 분할하여 전송하기 위해 PMTUD 과정을 거친다.
이를 통해 모든 장비의 MTU에 맞게 데이터를 전송할 수 있다.
HTTP, SMTP, SSH가 대표적으로 서비스를 실질적으로 사용자에게 제공하는 층이다.
HTTP
SSH
FTP
SMTP
재전송 : 시간 초과가 나면 데이터 재전송 시도
체크섬 : 송신 데이터와 수신 데이터의 같음을 체크섬 값을 통해 비교한다.
FIN_WAIT_1
상태로 서버의 응답을 기다림CLOSE_WAIT
상태로 들어감. 클라이언트는 서버의 세그먼트를 받으면 FIN_WAIT_2
상태로 들어감LAST_ACK
상태가 되며 일정 시간 이후 클라이언트에 FIN 세그먼트를 보냄TIME_WAIT
상태가 되고 서버로 ACK를 보내서 서버는 CLOSED 상태가 됨. 이후 어느정도의 시간을 대기한 후 연결이 닫힘IP, ICMP, ARP가 대표적이다. 전송계층에서 받은 세그먼트, 수신하며 받은 데이터그램을 패킷화하여 전송
노드와 노드 사이에 통신이 잘 되는지를 확인할 때 쓰는 프로토콜
ping www.google.com
과 같이 데이터를 교환하는데 사용되는게 아니다.
IPv4
IPv6
IP주소를 클래스 A, B, C로 구분지어 네트워크 주소, 호스트 주소로 나눈 클래스풀은
작은 네트워크가 필요한 조직은 너무 많은 IP를 가져가 낭비되는 문제가 발생합니다.
이를 해결하기 위해 클래스별로 나누는 것이 아닌, 서브넷마스크를 중심으로 나누는 주소체계를 사용
서브네팅: 네트워크를 나눔
서브넷: 서브네트워크, 쪼개진 네트워크
서브넷마스크: 서브네트워크를 위한 비트마스크
라우터는 네트워크 사이에서 데이터를 전달하는 장치로, 데이터를 목적지로 보낼 때 최적의 경로를 찾아 데이터를 넘겨주는 일(라우팅)을 수행. 라우팅 테이블
을 기반으로 최적의 경로를 찾음
IP주소를 기반으로 라우터의 위치를 저장한 테이블. 네트워크에 대한 정보와 연결하는 방법이 포함되어 있음
네트워크 인터페이스 (흔히 NIC) 에 할당된 고유 식별자.
IP주소를 MAC주소로 변환
1. 해당 IP주소에 맞는 MAC주소를 찾기 위해 브로드캐스팅
을 통해 연결된 네트워크에 있는 모든 장치에 보냄
2. 맞는 장치가 있다면 보낸장치에게 유니캐스트
로 본인의 MAC주소를 포함한 데이터 전달해 주소를 찾게됨
MAC주소를 IP주소로 변환
NAT을 통해 public ip와 private ip를 구분한다. (IPv4 주소 부족 문제 해결을 위해)
외부와의 연결은 public ip를 사용하고 public ip 주소는 NAT를 통해서 private 주소로 매핑된다. 내부 IP가 노출되지 않는 장점이 있고 사설 네트워크에 속한 여러 호스트가 하나의 public ip를 사용하므로 ip주소를 절약할 수 있다.
우리가 일상에서 쓰는 공유기도 NAT 기능을 한다.
인터넷 회선 하나를 개통하고 여러 대의 호스트가 공인 IP주소를 사용해 인터넷에 접속한다.