Network Fundamentals

1. Network 란 ?

서로 다른 장치(장비 or 시스템 등)들끼리 연결되어 통신이 되는 상태

통신의 3요소

  • 송신자
  • 수신자
  • 통신매개체 (송신자와 수신자를 연결하는 역할)

2. 종류

LAN ( Local Area Network ) : 근거리 통신망, 내부망

  • 관리자가 직접 관리 (내가 직접 관리, 설정)
  • 현재 1Gbps의 속도를 가진다
  • 이더넷 카드 - UTP 케이블
  • 허브 : 전기신호를 증폭해주는 장치 (전기신호가 약해지면 정보가 깨질 수도)

WAN ( Wide Area Network ) : 원거리 통신망, 외부망

  • 서비스 제공 업체 (ISP : Internet Service Provider) 에서 관리를 하기 때문에 관리가 용이
  • 보통 56Kbps ~ T1(1Mbps) or E1(2Mbps) 로, 느린 연결을 가진다
  • 라우터끼리의 연결 : 시리얼 카드, DTE ——– DCE 선 ( DTE 선 : 라우터에 꽂음 / DCE 선 : CSU or DSU )

3. Protocol ?

서로 다른 장비가 대화하기 위해 미리 정해놓은 통신규약 HTTP / HTTPS : 웹 브라우저에서 웹을 이용하기 위한 프로토콜 FTP : 파일 전송을 위한 프로토콜 (FTP 서버)

TCP/IP Network

1. OSI 7 layer vs TCP/IP Model Layer

  • 서비스 제공 업체 (ISP : Internet Service Provider) 에서 관리를 하기 때문에 관리가 용이
  • 보통 56Kbps ~ T1(1Mbps) or E1(2Mbps) 로, 느린 연결을 가진다
  • 라우터끼리의 연결 : 시리얼 카드, DTE ——– DCE 선 ( DTE 선 : 라우터에 꽂음 / DCE 선 : CSU or DSU )

7계층 : Application Layer (응용 계층)

시스템에 설치된 프로그램(엑셀, 메모장, 카톡 … )을 이용하는 계층
ex) 컴퓨터, 스마트폰, 인베디드 시스템 등 실제적인 장비

대표적인 기능 (인터넷 서비스)

  1. File Transfer (TFTP, FTP)
  2. E-mail (SMTP, POP3)
  3. Remote Login (Telnet, SSH)
  4. Name Management (DNS)
  5. WWW (HTTP, HTTPS)

6계층 : Presentation Layer (표현 계층)

데이터를 표준형식으로 변환 또는 암호화 (7계층 중 임베디드 시스템은 속하지 않음)
ex) *.txt, *.zip, *.mp4 등 확장자를 정함


5계층 : Session Layer (세션/연결 계층)

보내진 모습과 받은 모습의 결과가 동일하도록 만듦
ex) SSL (암호화로 전송하는 원격 프로토콜)

*7 ~ 5 계층의 데이터 전송 단위 (PDU : Protocol Data Unit) : 메세지 (Message)


4계층 : Transport Layer (전송 계층)

사용자 간 데이터의 투명한 전송을 제공하고, 상위 계층의 신뢰성 있는 데이터를 전송하는 서비스 제공(TCP) // 전송 방식을 정해줌 (UDP vs TCP)

UDP : User Datagram Protocol

데이터 전송의 단위가 작고, 안전하지 않지만 (보안성이 낮음) 오버헤드가 적어, 빠른 전송 서비스를 제공하는 프로토콜이다 ( 음성, 영상 등의 데이터 전송에 적합 : TV)

비연결형 프로토콜로, 수신자의 준비 상태를 판단하지 않으며, 인터넷상에서 정보를 주고받을 때 정보를 보낸다 또는 받는다는 신호 절차( TCP의 3/4-way hand shake 에 해당하는 과정이 없다는 뜻 같다 )를 거치지 않고 일방적으로 데이터를 전달한다 (단방향). 또한, 송신 측에서 상대의 수신 여부를 확인할 수 없는데, 이 점이 신뢰성이 없다는 것을 뜻한다.

*PDU : 데이타그램 (Datagram)

UDP 헤더의 구성

Source Port 송신 측 호스트의 포트번호
Destination Port 수신 측 호스트의 포트번호
Length UDP 패킷의 옥텟 단위 길이. UDP 헤더와 그 데이터를 호함한 단위길이로, 최소값은 8이며 이는 0 크기의 데이터 필드를 나타낸다
UDP Checksum UDP 헤더를 포함한 세그먼트 전체에 대하여 계산한 값으로, 에러 체크에 사용한다
Port Description
53 DNS : Domain Name System
69 TFTP : Trivial File Transfer Protocol)
137 WINS : NetBIOS Name Service
161 SNMP : Simple Network Management Protocol

*TFTP : 가상으로 만든 FTP로, 내부에서의 업로드, 다운로드에 사용되는 프로토콜

TCP : Transmission Control Protocol

연결지향형 프로토콜로, 송신자와 수신자가 서로 통신을 주고 받는다. 신뢰성을 필요로 하는 데이터 전송에 사용되며, 데이터를 송신하면, 이를 수신한 측에서 데이터를 이상 없이 받았다는 확인 맟 응답을 전송한다 (양방향). 일정 시간 내에 확인 응답을 받지 못하면 송신 측에서, 보낸 데이터가 손상 되었거나 유실이 되는 등의 문제가 생겼다고 판단하여 해당 데이터를 재전송 한다.

*PDU : 세그먼트 (Segment)

TCP 헤더의 구성

Source Port 송신 측 호스트의 포트번호
Destination Port 수신 측 호스트의 포트번호
Sequence Number SYN Flag가 1인 경우 초기 순서 번호를 나타내며, SYN이 0인 경우는 세그먼트의 순서 번호를 나타낸다
Ack Number 수신자에 의해 예상되는 다음 바이트의 순서 번호를 나타내며, TCP 통신 시에는 누적된다
Offset TCP 헤더의 32비트 워드 번호로, TCP 헤더의 시작부터 데이터 이전까지의 길이를 뜻한다
Flag(code) 아래 참조
Window 수신 측이 받을 수 있는 데이터 사이즈를 수신 측에서 송신 측으로 전송하는 값
Checksum TCP 헤더를 포함한 세그먼트 전체에 대하여 계산한 값으로, 에러 체크에 사용한다
Urgent Pointer 긴급히 처리해야 할 필요가 있는 데이터의 마지막 바이트의 위치를 나타낸다
Option 연결이 구성되는 동안 협살할 최데 세그먼트의 크기(MSS) 옵션을 정의


TCP Flag

Flag Description
URG (urgent) 긴급 포인터가 존재함을 표시. 순서에 관계 없이 먼저 전송되며, 이전의 데이터 처리를 기다리지 않고 대역을 벗어나 데이터를 보내기 위해 사용된다. (Telnet에서 인터럽트형 명령 전송 시 사용)
ACK (acknowledgement) 확인 응답 번호가 기술되어 있음을 표시
SYN 세그먼트 전송 이후에는 항상 이 비트가 1로 셋팅
PSH (push) 데이터를 가능한 빨리 응용 계층으로 보내야함을 표시하는 컨트롤 비트로, TCP가 메세지를 버퍼(수신용 메모리)가 찰 때까지 기다리지 안혹, 수신 즉시 버퍼링 된 데이터를 상위계층 프로세스에 즉시 전달할 수 있도록 한다
RST (reset) 연결 재설정 의사를 표시하며, 복구되지 않는 오류로 인해 가상회로를 리셋해야할 때 사용
SYN (synchronize) 연결을 초기화하기 위한 순서번호를 동기화
SYN = 1 ACK = 0 : 연결 요청
SYN = 1 ACK = 1 : 연결 수신 통지 (연결 허락)
SYN = 0 ACK = 1 : 연결 설정 (데이터 또는 ACK 패킷)
FIN (finish) 연결을 종료하기 위한 컨트롤 비트로, 송신기가 데이터 전송을 종료함
FIN = 1 : 종료 요청
FIN = 1 ACK = 1: 종료 응답
Port Description
21 FTP
23 Telnet
25 SMTP
80 HTTP
110 POP3
194 IRC : Internet Relay Chat
443 HTTPS
1863 MSN Messanger
8008 Alternate HTTP
8080 Alternate HTTP


TCP 3-way hand shake

SYN : 싱크 시퀀스 번호, ACK : 응답

연결지향 프로토콜로서 통신을 시작하기 전에 상대방과 먼저 연결을 만든 뒤 데이터 교환을 시작하는 과정을 말함. TCP는 신뢰성을 가지는 프로토콜이므로, 통신을 시작하기 전에 수신 측이 데이터를 수신할 준비가 되었는 지 확인하는 과정이 필요하다.

  1. 상대와의 세션 수립
    통신 가능하니 ? (SYN : client -> server)
  2. 데이터 전송
    통신 가능 / 불가능 (SYN, ACK : server -> client)
  3. 전송이 끝나면 맺었던 연결을 종료
    통신 시작하자 (ACK : client -> server)

TCP 4-way hand shake

  1. 연결 종료하고 싶어 (FIN : client -> server)
  2. 종료 요청 받았어 (ACK : server -> client)
  3. 나 이제 작업 끝났어 종료해도 돼 (FIN : server -> client)
  4. 종료 가능한 것 확인 했어 (ACK : client -> server)

태그:

카테고리:

업데이트: