제가 학부과정에서 네트워크 수업을 들은적이 없어서 항상 약점을 보이곤 했는데,
https://jupiny.com/2018/01/31/prepare-for-employment-as-developer/분의 글을 참고해서 "그림으로 공부하는 IT 인프라 구조"라는 책을 보게 되었습니다.
저번에 배민 테크업에 갔을때 기초서적은 일본에서 쓴 책들이 유용하다 라는 말을 들었었는데, 몸으로 실감하는 중입니다.
앞부분은 부담없이 술술 읽었고(사실 DB에 관해서도 조예가 깊지 않습니다... ㅠ) 글로 정리하면 추후에 기억하기에 좋다는 말을 들어서 한번 적어보겠습니다.
-
[기초] 계층 구조란?
네트워크 계층 구조란 서로 다른 환경에서 데이터를 교환하고 처리하기 위해 사용하는 구조입니다.
회사 내에서 영업부, 인사부, 총무부가 각각 맡고있는 영역이 다르듯이, 각각의 계층 구조에서는 역할 분업이 철저히 이루어집니다.
각각의 계층은 각자가 다루는 영역에 대한 은폐가 철저하고, 서로간에 영향을 주지 않고 독립적으로 동작합니다.
하지만 계층간 데이터 교환을 처리할 때 오버헤드가 발생합니다.
네트워크 계층 구조간 가장 핵심이 되는것이 OSI(Open Systems Interconnection) 참조 모델입니다.
흔히 OSI 7계층이라고 부르곤 합니다. 현재는 사용되지 않지만 참조 모델로 이용한다고 합니다.
-
OST 7계층 구조
애플리케이션 계층 - 애플리케이션 처리
프레젠테이션 계층 - 데이터 표현 방법
세선 계층 - 통신 시작과 종료 순서
전송 계층 - 네트워크의 통신 관리
네트워크 계층 - 네트워크 통신 경로 선택
데이터 링크 계층 - 직접 접속되어있는 기기 간 처리
물리 계층 - 전기적인 접속
-
프로토콜 - 통신시 다른 환경 간 원활한 데이터 전송을 위한 약속
-
TCP/IP 4계층
애플리케이션 계층
전송 계층
IP 계층
링크 계층
-
TCP의 역할(간단히): 애플리케이션이 보낸 데이터를 그 형태 그대로 상대방에게 확실하게 전달하는 것.
TCP는 서버가 송수신시 애플리케이션에게 데이터를 전달할 때 까지만을 담당한다.
TCP의 주요 역할
1. 포트 번호를 이용해서 데이터 전송
2. 연결 생성
3. 데이터 보증과 재전송 제어
4. 흐름 제어와 폭주 제어
데이터 통신은 소켓을 이용해 이루어진다.
-
TCP/IP의 3-Way handshaking
1. 통신 채널 개설 의뢰
2. 포트에 문제가 없을 경우 포트 개설
3. 클라이언트 확인 후 가상 경로 오픈
-
TCP의 데이터 손실 방지 기능
수신시 송신측에 데이터 도착을 알린다.(ACK라고 함)
TCP헤더로 ACK 정보를 넣은 TCP 세그먼트를 반환한다.
송신측은 해당 ACK를 통해 도착을 확인한다.
ACK가 도착하지 않을경우 오류!
일정 시간 내 ACK가 돌아오지 않으면 재전송한다.
중복된 ACK 번호가 도착할경우 재전송한다.(중복 ACK, 3회까지 기다림)
-
IP의 역할: 지정한 대상 서버까지 전달받은 데이터를 전해 주는 것.
데이터가 반드시 전달된다는 것은 보장하지 않는다.
주요 기능
IP 주소를 이용해서 최종 목적지에 데이터 전송
라우팅
IP주소 중 호스트부의 비트가 모두 0인것은 네트워크 주소
주소가 모두 1인것은 브로드캐스트 주소
다른 네트워크에 있는 서버에 도착하기 위해 라우팅을 이용한다.
동일 네트워크 내(링크 내) 데이터 전송은 MAC address(48비트)를 이용한다.
맥 어드레스의 브로드캐스트는 FF-FF-FF-FF-FF-FF이다.