네트워크를 공부하면서 정리한 내용을 러프하게 적어두려고 한다. 나중에 더 자세히 공부하면 그때 하나씩 디테일하게 다시 작성할 생각이다!
데이터를 주고 받는 각각의 노드들은 간선(통신매체)에 유무선으로 연결되어 있는 네트워크 장비(컴퓨터, 스마트폰, 라우터 등)들을 통해 통신할 수 있다.
네트워크는 범위에 따라 LAN, WAN으로 구분한다.
현대의 노드들은 메세지를 패킷 단위로 쪼개서 데이터(페이로드)에 헤더를 더해 서로 주고받는다.
노드간에 데이터를 주고 받을 때는 정해진 프로토콜을 따른다.
이런 네트워킹 과정은 OSI 7계층
, TCP/IP 4계층
이라는 참조 모델이 있다.
송신 과정에서는 데이터를 각 계층을 따라 전송하며, 각 계층의 페이로드를 다음 계층으로 전달하여 캡슐화를 수행한다. 수신 과정에는 역캡슐화한다.
캡슐화: 응용 > 표현 > 세션 > 전송 > 네트워크 > 데이터링크 > 물리
역캡슐화: 물리 > 데이터링크 > 네트워크 > 전송 > 세션 > 표현 > 응용
비트 데이터 변환, 통신매체를 통한 송수신
비트
유선 LAN 환경에서 통신매체를 통해 정보를 송수신하는 방법을 정의해둔 네트워크 기술, 현대의 유선 LAN들은 대부분 이더넷 기반이고, IEEE 802.3
으로 표준화 되어있고 데이터링크 계층의 이더넷 프레임 형식도 정해져있다. 다른 회사의 컴퓨터간에도 이더넷 표준을 준수하기 때문에 통신이 가능하다.
허브의 포트에 호스트와 유선으로 통신매체를 연결할 수 있다. 주소개념이 없어 데이터를 브로드캐스트 방식으로 전송하고, 반이중 모드로 통신하기 때문에 두 호스트가 동시에 데이터를 송신하면 충돌이 발생할 수 있다. 충돌은 CSMA/CD 프로토콜을 통해 해결된다. (현대에는 잘 사용하지 않음)
💡 CMSA/CD 프로토콜?
1. 데이터 전송 가능한지 확인
2. 충돌 발생시 일정 시간 대기 후 재발송
LAN기술, 네트워크 내 주변 장치 간 연결 및 오류 검출
프레임
프리앰블 (이더넷 프레임의 시작을 알림) + 송수신지 MAC주소 + 데이터 타입/길이 + 페이로드 (패킷) + FCS (Frame Check Sequence, 오류 검출용 값)
MAC주소를 학습해서 수신지에만 데이터를 보낼 수 있고, 전이중 통신을 한다. 허브보다 충돌 가능성이 낮아 CSMA/CD 프로토콜 대기시간이 없기 때문에 성능이 향상된다. 가상 LAN(VLAN) 설정을 통해 네트워크를 논리적으로 분리할 수 있다.
💡 MAC주소?
MAC 주소(Media Access Control Address)란 네트워크 장치의 고유 식별자로, 네트워크 상에서 특정 장치를 식별하기 위해 사용되는 물리적 주소다. 보통 NIC (Network Interface Controller)이 제조될때 할당된다.
일반적으로는 고유하고 변경되지 않는 주소이다.
💡 NIC?
NIC(Network Interface Controller)은 네트워크 인터페이스의 물리적 구현을 담당하는 컨트롤러 칩셋을 말한다. MAC 주소를 부여하고 호스트와 통신 매체 간의 데이터를 변환하여 연결을 관리한다.
다른 네트워크 간 통신, 비신뢰성, 비연결형 통신
허브와 스위치는 유선 LAN 환경에서 같은 네트워크 내에서만 통신 가능하다.
다른 네트워크간에 통신하려면 IP 주소와 라우터를 이용해야 한다.
패킷 (노드들이 데이터를 주고 받는 단위인 패킷과는 다른 용어)
송수신지 IP 주소 + 페이로드 (세그먼트 / 데이터그램)
네트워크 주소 (네트워크 식별) + 호스트 주소 (호스트 식별)
IP프로토콜로 IP 주소(논리적 주소)를 송수신지를 지정하고 전송하려는 패킷의 크기를 MTU(Maximum Transmission Unit)로 단편화해서 전송한다.
IP주소는 공인 IP주소와 사설 IP주소가 1:N의 관계로 NAT(Network Address Translation)을 통해 변환되어 사용된다. IP주소에 전송 계층의 포트 번호가 포함되어 있어 IP주소가 같아도 내부에서 어떤 호스트인지 구분가능하기 때문에 1:N 관계로 사용 가능하다.
💡 공인 IP 주소, 사설 IP 주소?
공인 IP 주소란 전 세계 인터넷에서 고유하게 식별되는 IP 주소로, 인터넷 서비스 제공업체(ISP)에 의해 할당되어 외부 네트워크와 통신에 사용된다.
사설 IP 주소란 특정 조직이나 네트워크 내에서만 사용되는 IP 주소로, 인터넷과 직접 연결되지 않는 장치에 할당된다. 고유성이 보장되지 않고 동일한 사설 IP 주소가 여러 네트워크에서 사용될 수 있다. 일반적으로 NAT(Network Address Translation)를 통해 공인 IP 주소로 변환되어 외부 네트워크와 통신한다.
💡 ARP 프로토콜?
만약 호스트의 IP 주소만 알고 MAC 주소를 모르면 ARP 프로토콜을 통해 MAC 주소를 찾는다. 다른 네트워크에 있는 호스트의 MAC 주소를 찾으려면 라우터의 MAC 주소를 알아야하고, 만약 모르면 라우터의 MAC 주소부터 ARP 프로토콜 요청을 보내서 찾아야한다.
패킷을 전송할 최적의 경로를 결정하는 장치이다.
네트워크 계층의 IP주소와 라우터는 네트워크 내의 호스트 주소까지 통신 가능하다.
그 후 어떤 프로세스로 전달할지 전송계층의 포트 번호로 구분한다.
TCP 프로토콜: 세그먼트 / UDP 프로토콜: 데이터그램
송수신지 포트 + 순서번호 + 확인응답번호 + 제어비트 + 윈도우 (수신자가 현재 받을 수 있는 데이터의 양)
전송 계층에서 프로세스를 식별하기 위한 숫자
신뢰성 통신, 연결형 프로토콜
세그먼트를 MSS (Maximum Segment Size)로 페이로드 전송
세그먼트에는 제어비트로 상태를 나타낸다.
세그먼트 제어비트 상태
ACK: 승인
SYN: 연결 수립
FIN: 연결 종료
TCP 연결은 연결 수립 -> 데이터 송수신 -> 연결종료
과정으로 이루어지고 오류, 흐름, 혼잡을 제어해서 신뢰할 수 있는 통신이 가능하다.
오류 제어: 오류 발생시 중복된 ACK
세그먼트를 수신하거나 타임아웃이 되면 ARQ (Automatic Repeat Request) 기법으로 재전송한다.
흐름 제어: 수신호스트가 주체로 세그먼트 윈도우 필드에 정보를 기재하여 수신 속도를 조절한다.
혼잡 제어: 송신호스트가 주체로 혼잡 윈도우를 계산해서 유동적으로 라우터에 세그먼트를 전송한다.
💡 ARQ (Automatic Repeat Request) 기법?
1. Go-Back: 오류 발생 시 특정 지점까지 다시 전송
2. Stop-and-Wait: 송신 후 응답을 기다리고, 응답 후 다음 데이터 전송
3. Selective Repeat: 오류가 발생한 데이터만 재전송
비신뢰성 통신, 비연결형 프로토콜, 속도 빠름
두 호스트 간의 연결을 유지하며, 데이터 교환 순서와 동기화 관리
데이터의 형식 변환 및 표현, 데이터 인코딩, 디코딩을 수행
사용자와 네트워크 간의 상호작용을 처리, 앱이 네트워크 서비스를 이용할 수 있도록 지원