[3주차] 프로토콜 정리

프로토콜: 컴퓨터로 이루어지는 데이터 교환 방식을 정한 규칙

프로토콜의 기본 요소

  1. 구문(SYNTAX): 전송하고자 하는 데이터의 형식, 부호화, 신호 레벨
  2. 의미(SEMANTICS): 효율적이고 정확한 정보 전송 및 오류 관리를 위한 제어 정보 규정
  3. 시간(TIMING): 통신 속도, 메세지의 순서 제어

프로토콜의 기능

  1. 단편화: 긴 데이터 블록 쪼개기
  2. 캡슐화: 프로토콜에 적합한 데이터 블록 제작을 위해 정보 추가

프로토콜 정리

1. TCP (Transmission Control Protocol)

client와 server 연결 상태에서 데이터 통신하는 프로토콜

client server
1. server로 SYN  
  2. client로 SYN-ACK
3. server로 ACK  

Segment format
*segment: TCP 통신 단위

TCP Segment Format

Source port address (4 bits) 데이터 보내는 호스트의 TCP 포트
Destination port address (4 bits) 데이터 받는 호스트의 TCP 포트
Sequence Number (8 bits) TCP 세그먼트에 있는 첫번째 바이트에 대한 순번
Acknowledgement (16 bits) receiver가 받기 원하는 number
HLEN (16 bits) header 길이 저장
Reserved (3 bits)  
Control field (13 bits) 1bit씩 존재
flag처럼 사용, 패킷 받으면 제일 먼저 확인
ACK: 데이터 전달 받음
SYN: 연결 요청
FIN: 연결 종료 요청
Windows size (8 bits) TCP 세그먼트 보내는 호스트의 TCP 버퍼 크기
TCP Checksum (8 bits) TCP 데이터와 TCP 헤더의 error 유무 확인
Option (16 bits)  

2. UDP (User Datagram Protocol)

일방적 데이터 전송하는 프로토콜
신뢰성이 떨어짐, 실시간 전송에 많이 쓰임

sender receiver
  1. sender로 request
2. receiver로 response  

UDP Communication

source port (16 bits) 출발지
destination port (16 bits) 목적지
length (16 bits) 길이
checksum (16 bits) 오류 검사

3. IP (Internet Protocol)

다른 네트워크 간 데이터 전송을 위한 경로 제어 프로토콜

IP의 속성

  1. 비신뢰성: IP 데이터그램 dest로 전송
  2. 비접속성: 논리적 주소로만 패킷 전송

Datagram format
*IP의 통신단위는 Packet인데 format은 datagram이라 명칭한 거 같다.

IP Datagram Format

VER (4 bits) ip버전을 기록, IPv4인지 IPv6인지
HLEN (4 bits) header의 길이 저장
기본 크기 20 bytes + option 때문에 플러스 알파 존재
전체길이/4의 몫 저장
Service type (8 bits) header+data
datagram 전체 길이 바이트 단위
Total length (16 bits) 단편화에서 같은 datagram인지 확인하는 번호
Identification (16 bits)  
Flags (3 bits) 처음 1 bit는 항상 0
2 bit: IP 라우터에 의해 분열 여부, 분열 가능하면 0
3 bit: 원래 데이터에 단편화가 더 있는지, 마지막 조각이면 0
Fragmentation offset (13 bits) 단편화되기 전 datagram의 위치
Time to live (8 bits) 패킷 수명
1~255 사이 값
라우터들이 패킷 전달할 때마다 –1
Protocol (8 bits) 어떤 상위계층 프로토콜이 포함되었는지 표시
Header Checksum (16 bits) 헤더에 오류 check
Source IP Address source 주소
Destination IP Address dest 주소

if 중간에 다른 라우터 존재, physical 주소 변경하여 목적지 도달
via 라우팅 알고리즘, 최적 경로 설정(라우팅 테이블)

4. HTTP (HyperText Transfer Protocol)

서버/클라이언트 간의 데이터 교환을 request/response로 정의한 프로토콜
TCP/IP 통신 위에서 사용됨

client   server
1. server로 request 이 사이에 proxy 존재
(ex. gateway, filtering..)
 
    2. client로 response

HTTP Communication

request는 다음 세 가지

  1. request line : method, path, version이 있다.
  2. request headers
  3. request message body

response는 다음 세 가지

  1. status line: version과 상태 코드가 있다.
status line  
1xx informational
2xx success
3xx redirection
4xx client error
5xx server error
  1. response headers: user와 상호작용을 위한 데이터를 담는 부분
  2. response message body: server의 응답 부분

*HTTPS는 HTTP에 TLS 프로토콜 도입하여 메세지 암호화..

5. ICMP (Internet Control Message Protocol)

ping을 이용한 통신에 쓰이는 프로토콜

sender switch router receiver
1. ping      
2. <receiver의 IP주소가 본인 네트워크와 동일한지 파악
동일하다면, 해당 네트워크로 ICMP 패킷 전달
동일하지 않다면, 기본 게이트웨이로 패킷 전달
     
3. ARP 패킷 생성, 경유 스위치로 전달      
  4. 전달 받은 ARP 패킷 learning -> table 갱신 -> flooding    
    5. ARP 패킷 검증과 ARP 캐시 테이블 갱신  

6. ARP (Address Resolution Protocol)

상대방의 IP 주소만 알고, MAC 주소를 모를 때 사용

     
같은 네트워크    
sender switch receiver
1. broadcast로 같은 네트워크 전체 node에게 패킷 flooding    
  2. 전달 받은 ARP 패킷 learning -> ARP table 갱신(MAC 주소 기록) -> request 답 없다면 다시 flooding  
    3. ARP 패킷 받고 sender의 MAC 주소 기록-> ARP Reply 패킷 전송
    2. 전달 받은 ARP Reply 패킷 learning -> ARP table 갱신(MAC 주소 기록) -> sender에게 전달

ARP Communication

Hardware type (6 bits) hardware 주소 타입, 네트워크 유형
Protocol type (2 bits) 사용하는 프로토콜 type
Hardware length HLEN (1 bit)  
Protocol Length/Size (1 bit) 망계층 주소 크기
Operation Code (2 bits) ARP 패킷 종류 표시
request - 1
reply - 2
rarp request - 3
rarp reply - 4
Sender Hardware Address (6 bits)  
Sender Protocol Address (4 bits)  
Target Hardware Address (6 bits)  
Target Protocol Address (4 bits)  

7. FTP (File Transfer Protocol)

TCP/IP 프로토콜을 가지고 server/client 파일 전송 지원 프로토콜

client server
1. 3-way handshaking 1회 진행  
2. request 입력해서 server로 보냄
FTP commands 사용
 
  3. 숫자 코드로 response
숫자 코드: FTP server return codes

8. FTPS (Trivial File Transfer Protocol)

FTP의 expand 버전.. TLS/SSL 암호화 프로토콜 지원
포트를 암호화하여 안전한 데이터 전송

9. TELNET (TELetype NETwork)

인터넷이나 로컬 영역 네트워크 연결에 사용

10. SSL/TLS

암호화 프로토콜
응용 계층과 TCP 계층 사이 보안 layer

client server
1. 3-way handshaking 1회 진행  
2. SSL/TLS 작동  

11. SSH

원격 시스템에서 명령을 실행하기 위해 다른 컴퓨터 로그인에 사용
TELNET에서 보안이 강화된 프로토콜