기술 면접 준비 1

Jiwontwopunch·2021년 12월 21일
0

스터디

목록 보기
2/16
post-thumbnail

OSI 7계층

계층을 나눈 이유: 통신이 일어나는 과정이 단계별로 파악되어 특정한 곳에 이상이 생겼을 때 그 단계의 에러만 고칠 수 있다. 또한 각 계층에 대한 캡슐화, 은닉의 목표도 있다.

네트워크에서 통신이 일어나는 과정

  1. 물리 Physical Layer : 통신 케이블로 데이터를 전송만!!! 통신 단위는 비트. 1,0, 전기적 신호로는 on/off 통신케이블의 종류로는 리피터와 허브가 있다.
  2. 데이터 링크 Data-Link Layer : 정보의 전달을 수행, 맥주소를 가지고 통신(브리지, 스위치), 전송되는 단위는 프레임. 신뢰성 있는 전송을 보장하기 위한 계층으로 CRC기반의 오류제어와 흐름제어가 필요하다. 물리 계층에서 발생할 수 있는 오류를 찾아 내고, 수정하는데 필요한 기능적, 절차적 수단을 제공한다.
  3. 네트워크 Network Layer : 데이터를 목적지까지 가장 안전하고 빠르게 전달하는 기능(라우팅), 프로토콜의 종류도 다양하고, 라우팅하는 기술도 다양하다. ICMP, ARP, IP → 주소부여(IP), 경로설정(Route), 패킷 생성
  4. 전송 Transport Layer : 사용자들이 신뢰성있는 데이터를 주고 받을 수 있게 해주며, 패킷들의 전송이 유효한 지 확인하고 전송 실패한 패킷들을 다시 전송한다. TCP, UDP → 패킷 전송
  5. 세션 Session Layer : 데이터가 통신하기 위한 논리적인 연결, 동시송수신방식(duplex), 반이중방식(half-duplex), 전이중방식(full-duplex)의 통신과 함께 체크포인팅과 유휴, 종료, 다시 시작 과정들을 수행, 이계층은 TCP/IP 세션을 만들고 없애는 책임을 진다.
  6. 표현 Presentation Layer : 데이터 표현이 상이한 응용 프로세스의 독립성을 제공하고 암호화한다.
  7. 응용 Application Layer : 응용 프로세스와 직접 관여하여 일반적인 응용 서비스를 수행한다.

TCP/IP 4계층

OSI7계층 이론을 실제 사용하는 인터넷 표준

  1. 네트워크 인터페이스(물리+데이터링크 계층) : Node-to-Node간의 신뢰성 있는 데이터 전송을 담당하고 물리적인 주소로 MAC를 사용
  2. 인터넷(네트워크 계층) : 호스트간의 라우팅을 담당, 상위 트랜스포트 계층으로부터 받은 데이터에 IP패킷 헤더를 붙여 IP패킷을 만들고 이를 전송
  3. 전송(전송 계층) : 통신 노드 간의 연결을 제어하고 자료송수신을 담당
  4. 응용(세션+표현+응용 계층) : 사용자와 가장 가까운 계층, 서버나 클라이언트 응용프로그램이 이 계층에서 동작한다.

3-way hand shake, 4-way hand shake

3-way hand shake(TCP연결 초기화할 때)

클라이언트는 서버에 접속을 요청하는 SYN패킷을 보낸다. 서버는 클라이언트에게 요청을 수락한다는 ACK와 SYN flag가 설정된 패킷을 발송하고 클라이언트는 서버에게 ACK를 보내고 이후부터는 연결이 이루어지고 데이터가 오고간다.

4-way hand shake(세션 종료하기 위해)

클라이언트가 연결을 종료하겠다는 FIN flag를 전송하고, 서버는 일단 확인메시지(ACK)를 보내고 자신의 통신이 끝날 때까지 기다리는 TIME_WAIT 상태가 된다. 서버가 통신을 끝냈으면 클라이언트에게 FIN flag를 전송하고 클라이언트는 확인했다(ACK)는 메시지를 보낸다.

DNS

URL주소를 IP주소로 변환하여 컴퓨터가 서로 통신하도록 한다. DNS를 운영하는 서버를 네임서버라고 한다.

도메인 이름으로 실제 IP를 어떻게 찾을 수 있는지 흐름 설명하기

윈도우 명령 프롬프트인 CMD에서 간단히 알 수 있다.
1. ping url
2. tracert url
3. nslookup url

TCP vs UDP

TCP Transmission Control Protocol "신뢰성을 보장" 1:1통신

인터넷상에서 데이터를 메시지의 형태로 보내기 위해 IP와 함께 사용하는 프로토콜. IP가 데이터의 배달을 처리한다면 TCP는 패킷을 추적, 관리한다. TCP는 3-way handshaking 과정을 통해 연결을 설정하고 4-way handshaking을 통해 해제한다. 높은 신뢰성을 보장하고 UDP보다 속도가 느리다. TCP는 연속성보다 신뢰성있는 전송이 중요할 때 사용한다.

UDP User Datagram Protocol 1:1 or 1:N or N:N

데이터를 데이터 그램 단위(독립적 관계를 지니는 패킷)로 처리하는 프로토콜, 비연결형 프로토콜로 연결을 위해 할당되는 논리적인 경로가 없는데, 그렇기 때문에 각각의 패킷은 다른 경로로 전송되고 각각의 패킷은 독립적인 관계를 지니게 된다. 정보를 주고 받을 때 보내거나 받는다는 신호를 거치지 않는다. 신뢰성이 낮다. TCP보다 속도가 빠르다. 신뢰성보다는 연속성이 중요한 서비스 예를 들어 실시간 서비스(Streaming)에 자주 사용된다.
*패킷: 라우팅을 효율적으로 하기 위해 데이터를 여러 개의 조각들로 나누어 전송하는데 이 때, 이 조각이 패킷, 일종의 분산투자라고 생각해도 된다. 목적지~경로단위 사이의 단일 단위. 각각의 패킷은 목적지 정보와 실제정보(payload)를 가지고 있다.

TCP 헤더

출처: https://evan-moon.github.io/2019/11/10/header-of-tcp/

HTTP, TCP, IP와 같은 프로토콜은 각자 자신이 맡은 역할이 있고, 보내고자 하는 데이터에 자신의 헤더를 붙혀서 데이터의 정보를 표현한다. TCP는 여러 개의 필드로 나누어진 20byte 즉 160bit의 헤더를 사용하며, 각 필드의 bit를 0또는1로 변경하여 전송하고자 하는 세그먼트의 정보를 나타낸다. (40byte, 60byte도 사용가능)

MTU Maximum Transmission Unit 최대 전송 단위

1500Byte (window95사용자들의 기본값, 이더넷 환경에서의 기본값)
MTU는 TCP/IP 네트워크 등과 같이 패킷 또는 프레임 기반의 네트워크에서 전송될 수 있는 최대 크기의 패킷 또는 프레임을 말하며, 대개 옥텟(1옥텟=8비트)을 단위로 사용한다. 매체에 따라 달라진다. TCP는 어떠한 전송에서라도 각 패킷의 크기를 결정하는 데 있어서는 MTU를 사용한다.

0개의 댓글