티스토리 뷰
Layer 4 Overview
End-to-End data 전송을 위한 logical communication 역활
- Connection-oriendted(TCP) vs. Connectionless(UDP)
- IP 및 PORT 번호로 식별
예시
우편을 전달한다고 할때, 건물 to 건물로 전달하는 것은 host to host로 Network Layer의 역활이고, 각 건물에서 우편을 사람 to 사람으로 전달하는 역활은 port to port로 Transport Layer의 역활이다
IP 계층에 대한 다양한 제어
- 동적 IP 주소 관리
- IP 변환 (NAT)
- IP packet 흐름 제어
Transport Layer 종류
Application에 따라 두가지 프로토콜 중 한가지를 사용한다
- User Datagram Protocol (UDP) : unreliable, connectionless service, transparent
- 안정적인 전달을 목표로한다
- Transmission Control Protocol (TCP) : reliable, connection-oriented service, congestion control
- 그냥 전달을 한다
두가지 모두 IP 상위 계층 위치에서 end to end로 segment (layer 4 pdu)를 전달하는 역활을 한다
- Best-effort and unreliable delivery service (IP) 상에서
- Application process에게 적절하게 packet을 전달 (socket to socket)
Transport-Layer Multiplexing
한 host내 다양한 process로부터 data 전달 역활
- Multiplexing : 여러 socket을 통해서 SDU를 받아 전송 (송신측)
- Demultiplexing : 수신된 PDU를 적절한 socket으로 전달 (수신측)
Socekt : process - transport layer 간 SAP
- Transport Layer에서는 들어오는 데이터와, 나가는 데이터에 대해 Port 번호로 식별한다
Port Number
Transport - Layer에서의 식별자 역활
- socket에 대한 식별
- 보통 source / destination별로 port 번호 존재
- well-known port number이 있다
UDP - User Datagram Protocol
간단한 multiplexing / demultipelxing기능의 프로토콜
- port번호와 checksum만 header로 붙는다
- 사실상 IP의 기능만 하고, application 계층에서 flow control 등의 기타 기능을 구현해줘야 한다
Segment 전송 방식도 심플
- 연결 과정 없이 바로 전송 가능
- 그냥 데이터만 계속계속 쏴주기만 하는 형태
UDP socket의 생성
- application process에서 socket 생성 즉시 Transport Layer에서 Port번호가 부여된다
: TCP의 경우 바로 부여되지 않고 일련의 처리가 필요하다
UDP segment 송수신
- Two tuple : destination IP & Port number
- 상대방 host의 port가 열려있으면 항상 전송이 가능하다
: IP, Port번호를 지정해서 보내면 바로 전달이 된다 (다른거 필요없음)
Source Port란?
- return Address 개념
- host A에서 목적지 IP & PORT로 보내면 바로 host A의 Source Port로 데이터가 들어온다
UDP의 장점
- application-level에서의 data 전송 제어가 손쉽다
- Connection establishment 과정이 불필요하다
- Connection State에 대한 관리 및 관련 동작 제한이 없다
: 재전송 등 관련 내용이 없음
- Packet header overhead가 적다 (segment의 형태가 매우 단순)
- 보통 대부분의 스트리밍, 인터넷 전화 등 실시간 서비스에서 사용한다
TCP - Transmission Control Protocol
Connection-Oriented : connection establishment 과정이 존재한다
- connection이 존재해야 segment 전달이 가능
Four tuple : Source IP / Port number , Destination IP / Port number
- source에 대한 정보까지 대조하여 socket에 mapping
왜 source에 대한 정보까지 대조가 필요한지 웹서버 예시
Host A로부터 Web Server 80번 포트로 캠퍼스 오는길 요청이오면 response를 줘야하므로 요청 때 Source IP와 Source Port를 같이 request를 보내고 서버에서는 해당 정보로 응답을 보내게 된다
TCP는 reliable data transfer를 지원
- 즉, 재전송 및 ARQ (automatic repeat request) 기능을 포함한다
좌측
- reliable transfer를 원하면 TCP로 pdu를 전달
- transport layer에서 알아서 처리 후 receiver에 전달
우측
- TCP 내부 구현 모습
- Transport Layer에서 PDU의 데이터를 받아서 어떠한 데이터를 보내는지 header를 붙여서 Network Layer로 보낸다
- 수신측에서는 받은 데이터를 재조합해서 제대로 왔는지 확인 후 올려준다
Connection Establishment (TCP)
process간 3-way handshake를 통해 수행된다
- 연결이 완료되어야 socket과 연결이 댐
- 특정 port로 connection establishment 메시지를 수신하고 나서 socket과 port번호가 연동된다
- point - to - point : single sender / receiver간 연결된다
client process(보내는 쪽)에서 initiation을 한다
- server process에서는 IP address / port에 대한 연결 승인
목적
- 상대방의 존재 알림
- optional parameter 결정
- transport entity resource 할당
- ARQ, Flow control을 위한 window등 이 Connection을 맺을때 수행하는 것들이다
Segment Format (TCP)
Sequence No. : Byte 시작점
ACK No. : 다음번 수신을 해야할 Byte offset
- Go back N에서 확인하는 Ack Number가 바로 이것
Receive window : Flow Control 때 설정하는 window
Retransmission과 함께 flow control 수행
송신 측 A - 수신 측 B
1. (TX) A에서 [Sequence Number (SN) 1001, 1201, 1401]을 보낸다
- 이는 1001byte부터 시작하는 데이터를 보냈다는 것. 위에서는 200byte씩 총 3번 보내고 있는 것이다
2. (RX) B에서 [ACK Number (AK) 1601, Window 1000]을 보낸다
- 1600까지는 잘 받았고, 1601부터 보내주면 된다는 의미 & 1000의 여유공간이 있다고 말해준다
3. (TX) A에서 1601, 1801은 이미 보냈으니깐 600byte를 더 보내면 되는 것을 인지하고, [SN 2001, 2201, 2401]을 마저 보내준다
- 이제 window 범위 내 byte를 다 보냈으니 ACK가 새로 와서 window를 update해줄 때까지 대기한다
4. (RX) B에서 [AK 2601, W 1400]을 보낸다
- 2600까지는 잘받았고, 여유공간 1400byte가 있으니 그만큼 보내라는 의미
Congestion Control (TCP)
UDP와 다르게 TCP는 congestion control을 수행한다
- network의 혼잡을 방지하기 위해 자체적으로 flow control을 수행
- 일시적 delay는 커지더라도, network 전체 관점에서는 이득이다
Window Management
- 일반적으로 window가 크면 congestion을 유발할 가능성이 크므로 아래와 같은 규칙하에서 관리한다
- Slow Start
- Dynamic Window Sizing
Slow Start & Dynamic window sizing 알고리즘 사용의 예시
정상적으로 전송-feedback으로 주고받는 상황에서 서서히 window크기를 확장한다
- 처음에는 작게 보내다가 시간이 지나면 점점 많이 보내는 형태
- 위 예에서는 시간^2만큼 window를 설정하는 모습이다
Time-Out 상황이 발생하면 window를 다시 처음으로 확 낮추고 다시 증가 시킨다
- 한번 congestion상황이 발생한 경우에는 임계구간에 도달시 window를 1씩 증가하게 한다
DHCP - Dynamic Host Configuration Protocol
특정 Host에 대해 IP를 동적으로 할당하기 위한 프로토콜
- 가능한 IP address pool 내에서 선택해서 요청 host에게 할당, DHCP 서버를 통해 이뤄짐
- 사용되지 않는 IP는 자동으로 회수된다
- 원래는 IP address수가 부족한 상황을 보완하기 위한 목적으로 만들어졌다
- 최근에는 wifi, subnet 내 불특정 다수의 host에 대한 IP address를 편리하게 부여하기 위한 용도로 사용된다
1. 특정 host가 새로 등장
2. DHCP server로 IP주소 요청 (ip주소 주세요)
3. IP 주소를 할당하는 response msg 수신
DHCP Message
1. Host가 ip주소 요청을 위해 무선, 유선 환경에서 [DHCPDISCOVER] 메시지를 브로드캐스팅해서 보낸다
2. 유, 무선 환경에 존재하는 DHCP는 해당 메시지를 수신하고, [DHCPOFFER] 메시지를 보내준다
3. Host는 IP 주소를 달라고 [DHCPREQUEST]를 보낸다
4. DHCP는 [DHCPACK]를 보내서 confirm하겠다고 알려준다
DHCP server discovery
- DHCP 서버를 찾는 메시지 (UDP port 67)
- IP : 255.255.255.255 (boradcasting)
- 해당 ip로 보내면 브로드캐스팅하겠다는 것이고, 그러면 모든 네트워크로 뿌리게 되어 모든 서버는 요청을 확인하게 된다
DHCP server offer
- sercer가 자신의 존재를 알려준다
- ip 주소에 대해 제안을 함
- 이때도 boradcasting
DHCP request
- IP 주소 달라고 함
- 제안을 보고 요청사항을 보낸다
DHCP ACK
- 확인했다고 보낸다
NAT - Network Address Translation
IPv4를 오늘날까지 생존하게 한 중요한 프로토콜
- 절대적으로 수가 부족한 IP address를 국지적으로 사용할 수 있게 해줬다
- small office, home office subnet에 적합하다
미리 주어진 IP address와 Port를 기반으로 해서 실제 내부 IP와 연동을 해주는 프로토콜
Small Office Home Office (SOHO)
- 초기에는 ISP로부터 일정 IP대역을 할당 받았다
- 이 subnet이 점점 커지면서 IP대역을 더 많이 요구하게 되면서 연속된 IP를 못받을 수 있게됨
Network Address Translation
- 하나의 IP를 할당 받아 내부의 subnet의 여러 host들에게 공통의 서비스를 하는 방식
- 내부적으로 IP를 따로 주면서 외부로 나갈 때 할당된 하나의 IP를 사용
작동방식
Out-Going IP + Port 번호와 내부 IP + Port로 Mapping
- NAT translation table을 통해 outer -> internal routing을 수행
- 처음 Out-Going packet에 대해 translation table항목을 생성하고 port번호를 부여
1. subnet의 한 Host가 Destination IP/PORT로 요청, subnet의 Gateway에 전달된다
- Gateway는 NAT translation table을 이용해서 LAN의 IP / Port 주소를 가지고 WAN의 IP / Port주소로 변환한다
2. Gateway가 수정한 Source IP/PORT 요청이 Destination IP/PORT로 간다
3. Destination에서 Gateway가 설정한 Source로 Response 보낸다
- 그 Source IP / PORT는 gateway 자체이고, 그걸 가지고 다시 내부 IP / PORT로 변환해준다
4. subnet의 해당 HOST에게 응답이 전달된다
NAT의 역활
외부 IP 하나를 통해 여러 host들이 손쉽게 networking할 수 있다
- 부족한 IP address 수 에 대한 강력한 보안책이다
Internal network내 Host를 감추는 역활을 한다
- 외부에서는 어떤 host든 Single IP로 밖에 보이지 않으므로 보안성을 높여준다
한계점
- In Going packet으로 연결이 시작되는 서비스가 불가능하다
- 그냥 Port 5001 로 요청하면 NAT는 table에 없는 정보이므로 처리할 수가 없다
NAT Issue
Port 번호의 용도가 잘못됐다
- Host를 지칭하는 것이 아닌, Service를 지칭해야 한다
- 하나의 Host내에서 여러 프로그램들의 요청을 구분하기 위한 Port번호인데, 요청 Host를 구별하는 용도로 사용한다
Layered architecture concept에 어긋난다
- IP header에 대한 관리는 L3에서만 해야하는데, L4에서 조작하고 있다
IP header에 대한 생성/조작은 End-to-end단계에서만 다뤄져야한다 (Gateway에서 가로채서 조작하므로)
IPv4의 다음 기술인 IPv6가 널리 퍼지는것을 막고있다
UPnP - Universal Plug and Play
P2P file-sharing 혹은 VoIP와 같이 외부에서 접속이 필요한 서비스를 NAT환경에서 지원하기 위한 프로토콜이다
- Host가 주변 NAT와 사전 Configuration을 진행
- Private IP/PORT와 Public IP/PORT를 미리 지정
- Outside node에서 해당 IP/PORT로 internal host에 접속이 가능하다
Firewall
Internal Network와 Internet의 경계를 짓는 존재
- Allow some packets to pass and blocking others
- Internal Network - internet간 대문 Gateway 역활을 한다
Network Security 측면에서의 주요 역활
- Network 관리자가 외부 접속에 대한 관리를 가능하게 해준다
3가지 목표
1) 모든 양방향 traffic이 firewall을 통해서 지나가도록 한다
- 외부 internet과 관리 대상인 내부 망의 boundary 역활
2) Local Security Policy에 의해 규정된 허용 트래픽만 통과시킨다
- 유입 / 유출되는 traffic에 대해 관리자가 지정한 정책에 따라 흐름을 제어한다
3) Firewall 자신은 보안에 매우 강해야한다
- firewall이 공격당하기 쉬우면 차라리 없는게 더 낫다
Traditional Packet Filters
- 보안적인 측면과 더울어 Internal network의 용도 및 관리자의 의도에 맞게 적절히 filter를 수동으로 설정할수 있다
- IP와 Port번호를 조합해서 규칙 생성이 가능
- 리눅스에서 방화벽 규칙등을 설정할 수 있다
실제 Firewall Rule은 Access Control List를 설정해서 구현한다
Stateful Packet Filter
- Connection별로 각각 filtering 규칙 적용
- 각 packet에 대해 별도로 filtering 규칙을 정하는 traditional packet filter와는 다르다
- Connection의 Handshake 절차 등을 추적하면서 filtering을 할 수 있다
예시
명시적으로 연결을 막음 -> source adderss 222.22.1.7 , dest address 37.96.87.123 source port 12699 dest port 80
Application Gateway
- Filtering이 Packet기반이 아닌 application수준의 상황에 따라 이뤄져야할 때가 있다
- e.g.) 특정 internal user에게만 telnet service 허용
- Firewall과 잘 협업해서 Packet filter를 한다
- IP/TCP/UDP보다 윗계층에서 application data를 확인한다
'CS > 네트워크 전공 수업 정리' 카테고리의 다른 글
10. Layer 5 : Application Layer (0) | 2021.05.06 |
---|---|
8. Layer3 : Routing (0) | 2021.04.28 |
7. Layer 3 (0) | 2021.04.28 |
6. Layer 1 & 2 (0) | 2021.04.27 |
5. Protocol Function 3 (2) | 2021.04.27 |
- Total
- Today
- Yesterday