프론트엔드개발자라면 react,js 뿐만아니라 cs전공지식도 중요하다.
운영체제,서버,알고리즘/자료구조,디자인패턴 등등 알아야 할게 많지만 개발자라면 네트워크 지식에 대해서 특히 빠삭해야한다고 생각한다.
심지어 나는 정보통신전공이다, 이쪽 직종에서 일해본 만큼 이걸 까먹는다면 답이없다.
통신이 일어나는 과정을 7개 단계로 나눈것이다.
장점
물리계층 (1계층)
단순히 데이터만 전달하는 계층이다.(신호변환,데이터전송)
특징 : 기계적, 기능적
관련장치 : 허브, 리피터
프로토콜 : Modem, Cable, Fiber, RS-232C
데이터링크 계층 (2계층)
오류,흐름을 관리하고 정보전달을 도와준다. MAC 주소를 사용하며 신뢰성 있는 정보를 전송하기 위한 역할을 수행한다.
특징 : 오류제어, 순서제어
관련장치 : L2 스위치, 브리지
프로토콜 : 이더넷, MAC, PPP, ATM, LAN, Wifi
네트워크 계층 (3계층)
데이터를 목적지까지 안전하고 빠르게 전달 (라우팅 기능을 지원)
특징 : 경로제어, 라우팅
관련장치 : 라우터, L3 스위치
프로토콜 : IP, ICMP 등
트랜스포트 계층 (4계층)
송/수신 측의 실질적인 연결을 설정하고 신뢰성 있는 통신이 가능하도록 한다.
특징 : 플로컨트롤, 에러복구 기능 (TCP, UDP)
관련장치 : 게이트웨이, L4 스위치
프로토콜 : TCP, UDP , ARP, RTP
세션 계층 (5계층)
데이터 전송 시 동기점을 제공해서 오류 발생 시 데이터를 재전송하거나 복구가 가능하다.
특징 : 동기화, 다중화 , 오류 복구
프로토콜 : NetBIOS, SSH, TLS
표현 계층 (6계층)
데이터의 표현방식에 관한 서비스가 이루어진다. 암호화 된 데이터의 해독을 수행한다.
특징 : 암호화 , 데이터 번역
프로토콜 : JPG, MPEG, SMB, AFP
응용 계층 (7계층)
사용자에게 직접 제공되는 서비스나 프로그램은 이 계층에 해당된다.
소프트웨어나 인터페이스를 제공하는 여러 프로토콜 등 정보를 처리하는 역할을 수행한다.
프로토콜 : HTTP , DNS 등
프로토콜 : DHCP, DNS, FTP, HTTP