일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 생활코딩
- 자바개발자
- 인프라
- UNIDEV
- Developer
- 전국대학생게임개발동아리연합회
- 백엔드개발자
- 인디게임
- EC2
- 체크인미팅
- 게임개발동아리
- 42서울
- 프로그래밍
- RDS
- 프리티어
- 배포
- 스프링
- 위키북스
- CICD
- 온라인테스트
- AWS
- 백엔드
- 오블완
- UNICON
- 티스토리챌린지
- 라피신
- 스프링부트
- 개발공부
- UNICON2023
- 도커
- Today
- Total
Hyun's Wonderwall
[정보통신공학] Chap 2.(1) Protocol Architecture, TCP/IP, Internet-based Applications 본문
[정보통신공학] Chap 2.(1) Protocol Architecture, TCP/IP, Internet-based Applications
Hyun_! 2024. 4. 19. 14:22~ Week 2-1의 Protocol부터 Week 2-2 끝까지 ~
Protocol Layers & Reference Models
- Networks는 많은 조각들로 이루어져서 복잡하다. -> 어떻게 조직?
- 비행기 여행의 예시
비행기 탑승 과정과 내리는 과정이 서로 대칭적임. 여러 서비스들 존재 -> layers. 각 레이어는 service를 제공한다.
(독자적인 계층의 action을 통해. 하위 계층에서 제공되는 서비스에 의존.)
왜 Layering?
- 복잡한 시스템 다루기: 명시적인 구조를 통해 복잡한 시스템 조각들을 식별하고 관계를 맺을 수 있다. (layered reference model)
- 모듈화로 시스템의 유지보수, 업데이트 용이 (계층의 서비스 구현 변경 -> 나머지 부분에 영향 x)
Internet Protocol Stack (5 Layer)
5. Applicaion Layer - supporting network applications (IMAP, SMTP, HTTP. app 특화 다양 메시지들.)
4. Transport Layer - process-process data transfer (TCP, UDP)
3. Network Layer - 라우팅. (routing of datagrams from source to dest. IP. routing protocols.)
2. Data Link layer - 이웃한 네트워크 요소 사이에 데이터 전달. (포워딩. local. 라우터나 스위치 1대1. ex-이더넷, 802.11 와이파이. PPP)
1. Physical Layer - bits on the wire. 전선 등 물리적 매체 어떻게 보낼지.
Encapsulation 캡슐화
packet switching 위해 각 레이어별로 헤더들을 붙인다. 헤더들을 메시지 앞에 붙이므로 오버헤드 발생(바이트 추가됨)
5계층: message(M), 4계층: segment(Ht+M), 3계층: datagram(Hn+Ht+M), 2계층: frame(Hl+Hn+Ht+M), 1계층도 헤더 있음.
- source에서 5계층 -> 1계층 순서로 포장하여 보낸다.
- switch는 2계층, 패킷을 까서 Hl(Link의 헤더)을 참조해 어디로 데이터를 전달되어야 하는지 확인한다. 그리고 다시 포장해 전송.
- router는 3계층, 패킷을 까서 Hn(Network의 헤더)을 참조해 어떤 IP로 왔고 어떤 IP로 가야하는지 해석한 후 보낸다.
- destination에서 도착한 패킷을 역순으로 까서 필요한 메시지 M을 확인한다.
~ week 2-2 ~
"TCP/IP" Protocol Architecture
TCP/IP는 인터넷 표준인 다양한 프로토콜의 큰 집합으로 구성되어있다.
TCP는 Transport Layer(4계층), IP는 Network Layer(3계층).
The TCP/IP Layers and Example Protocols
5. Application: HTTP, SMTP, SSH, IMAP, FTP
4. Transport: TCP, UDP
3. Network(또는 Internet): IPv4, IPv6
2. Data Link(Network Access): Ethernet, WiFi, ATM
1. Physical: Twisted pair, optical fiber, satelite, terrestrial microwave
1. Physical Layer
컴퓨터와 네트워크 간의 물리적 인터페이스를 다룬다.
관련: 전송 매체의 특성, 시그널의 특성, data rates
2. Network Access/Data Link Layer
엔드 시스템과 그것이 붙어있는 네트워크 간의 데이터 교환을 다룬다. (맞닿아 있는 것들 사이에 데이터 포워딩)
관련: 동일한 네트워크에 연결된 두 엔드 시스템에 대한 네트워크 간 데이터 액세스 및 라우팅
3. Internet Layer
Network Layer. 어떻게 데이터 라우팅? IP
4. Transport(Host-To-Host) Layer
TCP. UDP.
5. Applicaion Layer
사용자와 소통.
TCP/IP concepts
Host A와 B의 5계층에 프로세스들이 각각의 port번호를 가지고 있음.
socket 통신을 진행하여 Host A와 Host B가 TCP 연결(logical connection) 맺음. // connection-oriented, TCP 연결을 해줘야 함
(통신에 필요한 2가지 정보: IP, Port)
4계층에 TCP 있고
3계층에 IP 있음 (IP: global internet address, Host를 식별.)
2계층에 Network Access Protocol
이동... Host A 전송 -> network1 -> Router J에서 IP 확인하여 라우팅됨 -> network2 -> Host B 수신
+) 데이터가 깨졌는지 여부는 checksum을 확인한다.
TCP/IP의 주소 요구사항
두 가지 수준의 주소 지정 필요: IP주소와 Port번호.
- IP address: 하위 네트워크의 각 호스트가 갖는 고유한 global internet address. 컴퓨터 디바이스를 찾기 위한 주소.
- Port: 프로세스가 호스트 내에서 식별을 위해 갖는 고유 주소.
Transport 레이어의 TCP/UDP에서 Port 지정하고, Network 레이어에서 IP주소를 지정한다.
Protocol Data Units(PDUs) in the TCP/IP architecture.
- Application - user data (application | 형식: byte stream)
- Transport - TCP 헤더가 붙음 (TCP | 형식: segment)
- Network: IP 헤더가 붙음 (IP | 형식: datagram)
- Data Link: Network 헤더가 붙음 (형식: Frame)
각 계층에서 header를 제외한 부분은 body라고 한다.
TCP (Transmission Control Protocol)
- 많은 응용 프로그램들에서 transport 계층의 프로토콜로 사용된다.
- 데이터 전송에 대해 reliable connection을 제공한다.
- 기본 프로토콜 단위: TCP segment.
TCP는 segment들이 잘 도착했는지 tracking한다. (몇 번 segment가 없는지, 잘 왔는지) 따라서 순서를 보장한다.
TCP 헤더 그림
Source Port, Destination Port (Port 번호 지정)
Sequence Number (보낸 것들 잘 도착했는지 순서 확인)
Acknowledgement Number - 잘 받았다고 알려주기 위해?? 데이터 잘 전송됐는지?
Header length(헤더 길이), Reserved, Flags, Window
Checksum: 에러 유무 체크용, Urgent pointer,
Options, Padding
(20byte에서 시작, 더 커질 수)
UDP (User Datagram Protocol)
- UDP는 전달, 순서 보존, 중복 방지 등을 보장하지 않는다! (sequence 개념x)
- 최소한의 프로토콜 매커니즘으로 빠르다. 8byte. (내 IP, Port로 온 것을 그냥 바로 app으로 보낸다.)
- SNMP(Simple Network Management Protocol)와 함께 사용된다.
- 데이터에 오류가 발생하지 않는지 확인하기 위한 Checksum을 포함한다.
UDP 헤더 그림
Sort port, Destination Port (Port 번호 지정)
Segment length (Byte 단위-메시지와 이 헤더 길이의 합), Checksum (매우 단순한 구조)
IPv4 헤더 그림
- Version, Total Length, Fragment offset, Time to live 등
- Source Address와 Destination Address가 32bit
IPv6 헤더그림
- Hop Limit (10Hop까지만 라우팅 해주고 넘어가면 지운다. 라우터가 Hop Limit 1씩 감소도 시켜야 한다.
- Source Address와 Destination Address가 128bit (4배)
- Version, Next Header 등
+) TCP/IP Protocol Suite의 프로토콜들 보기
HTTP, SMTP, SSH, FTP 등이 TCP를 사용한다. (+SNMP는 UDP를 사용)
3계층에는 IP뿐 아니라 라우팅 관련 프로토콜들도 존재 (ICMP, RSVP 등)
+) 표준화를 위한 프레임워크로서의 프로토콜 아키텍처
application layer와 physical layer 사이의 layer들이 있다.
Layer N은
바로 윗 계층(N+1번째 Layer)에 서비스를 제공한다.
adressing이 있다.(port or service access point)
peer layer N과의 프로토콜이 있다.
Internet-based Application Layer
"Principles of network applications" - overview
- Application 계층 프로토콜들의 개념 및 구현 측면
- transport-layer 서비스 모델
- client-server paradigm, peer-to-peer paradigm
- Application 계층에서 사용되는 프로토콜들: HTTP, SMTP, IMAP, DNS
- 네트워크 애플리케이션을 프로그래밍 (socket API)
Network App
- 예시: SNS, 웹, 이메일, 통신 게임 등...
- Creating a Network App
- 서로 다른 엔드 시스템에서 실행되고, 네트워크를 통해 통신하는 프로그램을 작성. (ex. 웹 서버 sw가 브라우저 sw와 통신)
- network-core 장치용 sw를 작성할 필요x (network-core에서는 애플리케이션을 실행x.)
- 엔드 시스템에서 애플리케이션 -> 빠른 앱 개발, 전파 가능
Client-Server Paradigm
Server: // 데이터 제공
- always-on host (항상 켜져있어야 한다.)
- pernament IP address (바뀌면 안 된다.)
- often in data centers, for scaling
- Clients*: // 데이터 요청
- contact, communicate with server (서버와 연락, 통신)
- may be intermittently connected (간헐적 연결)
- may have dynamic IP addresses (유동적 IP일 수 있다)
- do not communicate directly with each other (client끼리는 통신x)
- ex. HTTP, IMAP, FTP
Peer-to-Peer Paradigm
- 항상 켜져있지 x. arbitrary(임의의) end system과 직접 통신.
- peer들 서로 서비스 요청 및 제공 => self scalability (새 peer -> new service capacity/demand)
- intermittently 간헐적으로 연결되고 IP 주소를 바꾼다. (관리 복잡)
- ex. P2P file sharing
Processes communicating
- process: host 내에서 실행되는 프로그램(application).
- 한 호스트에서 두 프로세스는 inter-process communication으로 통신함. (IPC. OS에 의해 정의됨)
- 다른 호스트에서 프로세스간의 통신은 messages를 주고받아 통신함.
프로세스에서 client와 server - client process: process that initiates communication (서비스 요청. 통신 시작)
- server process: process that waits to be contacted (요청을 기다리고, 서비스 제공)
(P2P 아키텍쳐 애플리케이션: 내가 클라이언트이자 서버)
Sockets
- 프로세스는 socket을 통해서 메시지(데이터)를 주고받는다.
- 일종의 문. 통신하려면 송신 측과 수신 측 각각에 소켓이 필요함.
- Application Layer와 Transport Layer 사이에 위치.
(application 계층을 개발자가 관리, transport 이하의 계층은 os가 관리) - 메시지가 소켓을 통해 보내지면, 네트워크 인프라가 메시지를 목적지로 전달함.
Addressing Processes
메세지를 받으려면 프로세스는 identifier를 가져야 한다.
identifier = IP주소 + port번호
- host device는 32-bit IP address를 가진다. (IPv4)
- port 번호: 프로세스 구분 식별자. (ex. HTTP: 80, mail server: 25)
(port 번호가 필요한 이유: 한 host에서 여러 프로세스가 돌아갈 수 있어서 프로세스 식별 필요.) - 어떤 웹 서버로 HTTP 메시지를 보내려면 그 서버의 IP 주소 + port번호 80으로 보내면 됨.
Application layer의 Protocol에서 정의하는 것들
- types of messages exchanged (ex. request, response)
- message syntax (what fields in messages & how fields are delineated
- message sematics (meaning of information in fields)
- rules (언제 어떻게 프로세스가 메시지를 전송하고 답장하는지)
Protocol의 유형들
- open protocols: RFCs에 의해 정의되어 누구나 프로토콜 정의에 접근 가능. 상호운용성을 허용. (ex. HTTP, SMTP)
- proprietary protocols: 독점. (ex. Skype)
App이 필요로 하는 transport service는 무엇일까? (중요 기준들!!)
- Data Integrity - 데이터 무결성. 데이터가 유실없이 잘 도착할 수 있는지.
- 있: TCP (파일 전송 등은 reliable data transfer 필요)
- 없: UDP (audio 등)
- Timing - 딜레이 없이 도착할 수 있는지.
- low delay를 요구하는 경우들 (인터넷 전화, 실시간 게임)
- Throughput(처리량) - 주어진 시간에 얼마나 처리 가능한지.
- 어떤 app들은 효과적인 작동을 최해 minumum amount of throughput(최소한의 처리량)을 요구한다. (ex.multimedia)
- 다른 앱들(elastic app)은 얼마의 처리량을 받든 그것을 활용한다.
- Security - 보안
- encryption(암호화), data integrity ...
TCP Service:
- reliable transport 신뢰성 있는 전송 - 데이터 손실되지 않도록 보장함
- flow control 흐름 제어 - 수신자가 처리할 수 있는 만큼의 데이터만을 전송, 수신자에게 처리 부하 발생을 방지
- congestion control 혼잡 제어 - 네트워크가 혼잡하면 전송 속도 낮춤
- does not provide: timing, minimum throughtput guarantee, security (타이밍, 최소 대역폭 보장, 보안을 제공하지 않음)
- connection-oriented 연결 지향성: client와 server 프로세스 간에 setup이 요구됨
TCP는 데이터 신뢰성 보장. (많은 경우에 TCP. 단점은 오버헤드 크고 전송 속도 느림)
UDP service:
- unreliable data transfer (그냥 보냄, 책임 안 짐)
- does not provide: reliability, flow control, congestion control, timing, throughput guarantee, security, connection setup
UDP는 전송 속도가 빠르고 오버헤드가 적음. 실시간, 속도가 중요하고 데이터 신뢰성이 상대적으로 중요하지 않은 경우 사용. (실시간 게임, 음성 통화 애플리케이션, DNS 등)
Internet transport protocols services (TCP vs UDP)
Transport Service requirements: common apps
- data loss: no loss / loss-tolerant
- throughput: elastic / audio: 5Kbps-1Mbps / video: 10Kpbs-5Mbps / Kbps+
- time-sensitive? no / yes, 10'msec / yes, few secs / yes and no
- TCP인 것들: file transfer/download, e-mail, web docs, (streaming audio/video)
- TCP 또는 UDP인 것들: internet telephony, interactive games, (streaming audio/video)
Securing TCP
- Vanilla TCP & UDP 소켓: 암호화 x. 비밀번호가 평문으로 인터넷에서 이동함,,,
- Transport Layer Security(TLS): TCP 연결을 암호화.
- 데이터 무결성 보장. end-point에서 authentication(인증) 수행.
- TLS가 application layer에서 구현된다.
- app은 TLS 라이브러리를 사용한다 (TLS 라이브러리가 TCP를 차례로 사용함)
- TLS socket API: 소켓으로 전송되는 평문을 암호화한다.
'Subjects > 정보통신공학' 카테고리의 다른 글
[정보통신공학] Chap 5. Data Encoding, Modulation, Sampling 및 Quantization (0) | 2024.04.19 |
---|---|
[정보통신공학] Chap 4. Transmission Media (0) | 2024.04.19 |
[정보통신공학] Chap 3. Data Transmission (0) | 2024.04.19 |
[정보통신공학] Chap 2.(2) HTTP, SMTP, Socket Programming (0) | 2024.04.19 |
[정보통신공학] Chap 1: 데이터 통신, 네트워크, 인터넷 (0) | 2024.04.19 |