[컴퓨터네트워크] Chapter 6. Transport-Layer
L3 : ICMP, IP, ROUTING의 프로토콜 등 다양했지만
L4 : UDP or TCP (둘중 하나를 선택해야함)
Layer 4 : 데이터 전달(L3), end-to-end data 전송을 위해서 logical communication(논리적 연결)
- Connection-oriented(연결지향 tcp) vs connectionless(연결 없음 UDP)
L3(연결이 없다. 내 바로 뒤에 누구에게 전달할지 생각하는거.)
L4(끝단이 어디인지까지 생각, ip및 port번호로 식별, L3와의 연결지점 sap가 port가 된다.)
UDP
- connectionless serivces(연결 없음.)
- unreliable(비신뢰성)
- ack를 기다리지 않는다.
- 전송 후 신경쓰지 않는다.
- error control function이 있냐 없냐로 udp와 tcp 구분
- 오류제어는 없냐.
- transparent(투명한)
tcp(transmission Control Protocol)
- 그 반대.
- connections-oriented services
- reliable
- ack기다리고
- 전송후 신경쓰고
- error control function
- congestion control(flow,error동시에)
두가지 모두 IP 상위 계층위치에서 end-to-end로 segment를 전달하는 역할
- ip layer(connection less, 이지만 라우터(유선)으로 연결해서 에러율이 적다. 라우터는 단순히 데이터 전달만.)
- Best-effort(시간에 상관없이 어떻게돈 보내겠다. 안좋은뜻) delivery service(ip)상에서 애플리케이션 프로세스에게 적절하게 패킷 전달(soket to soket)Application 프로세스에게 적절하게 포캣 전달.(soket to soket)
Transport-Layer Multiplexing
L5 와 L4사이의 Sevice access Point를 Soket이라 한다.
L4 → L3 sap를 port라고 한다.
L4의 주요 역할 어떤 소켓으로 들어온걸 포트로 연결한다.
한 호스트 내의 다양한 프로세스로부터의 데이터 전달 역할
Multiplexing(다중화) : 여러 soket을 통해서 SDU를 받아 전송 (여러개 데이터를 하나로 합치는것)
Demulitplexing(역다중화) : 수신된 pdu를 적절한 소켓으로. (하나로 합쳐진 데이터를 나누는것)
Port number
- 전송 계층에서의 식별자
- 소켓에 대한 식별
- 잘 알려진 포트 있음.
http://host:()
이것은 80번 포트로 접속 하는 것을 의미한다.
User Datagram Protocol(UDP)
- 간단한 다중화/역다중화 기능의 프로토콜이다.
- 세그먼트 전송 방식도 심플함
- 연결과정없이 바로 전송 가능
————4byte————— |
————4byte————— |
Data
UDP socket의 생성
- Application process에서 socket 생성 즉시 transport layer에서 port 번호가 부여됨
Two tuple :
- destination ip & port number 만 보고 전달
- 상대방 host의 prot가 열려있느면 항상 전송 가능.
- ip, port 번호를 지정해서 보내면 바로 전달이 됨.
udp 는 connection less다. 즉 보내고 만다.
장점
- connnection establishment(연결 구축)과정이 불필요하다. (ack가 없다.)
- connection state에 대한 관리 관련 동작 제한이 없다.
- 오버헤드가 적다.
- application-level의 data 전송 제어가 쉽다.(즉 어플리케이션이 잘 보내면 된다.)
단점
- error control, flow control이 없다. flow control은 응용에서한다.
- 메일이나 웹 서버에는 udp를 사용안하고 안정적인 tcp를 사용한다.
- udp는 multi media 처럼 delay가 중요한 실시간 서비스에서 사용된다.
TCP
- Connection-oriented
- 즉각적인 응답.(ack)
- connection establishment 과정이 존재한다.
Four tuple
- Sorce IP/Port number
- destination IP/Port number
- source 에 대한 정보까지 대조하여 소켓에 매핑.
송신 측에서도 받을 준비가 되어있어야한다. = connection
이것이 TCP의 가장 중요한 역할이다.
Connection establishment
- process간
three way handshake
를 통해서 커넥션을 맺는다. - 특정 포트로 Connection establishment 메세지를 수신하고 나서 socket과 port번호가 연동됨.
client ——con req(나 이렇게 보낼께?)———> Sev
<——-con conf(ok, 그럼 ack이렇게 보낼께?)—
—-con complete(ok. 알겠어)-—>
connection을 맺을 때 어떤식으로 보낼지에 대한 파라미터 들이 들어가 있다.
data length, crc… 이런 것들.
(상대방 존재 알림, optional parameter, trainport entity resource 할당)
- Client process에서는 initation(개시)을 함
- 서버 프로세스에서는 ip address/port에 대해 연결 승인
- 컨펌을 받는다 = 리소스 할당 되었다.
- 목적 : 상대방의 존재 알림, optional parameter 결정, transport entity,resource 할당
——————————-4byte——————————————- |
——————————-4byte——————————————- |
——————————-4byte——————————————- |
——————————-4byte——————————————- |
options
data
- Sequence no. : Byte 시작점.
- Ack no : 다음번 수신해야할 Byte offset ex)1000이라면 999까지는 잘 받았어! 라는 뜻
- Recieve window : 한번에 최대로 보낼 수 있느 byte 수 (2^16승 kb까지 보낼 수 있다.)
- Urgent(즉각적 수행) 보통 마지막 segment에 관용적으로 Urgent를 집어 넣음.
- ack : 1 이면 ack, 0이면 ack가 아니다.
- 커넥션에 관련된 PSH(상태),SYN,FIN
- checksum : 전체 데이터를 다 표현
- Opting : data length
L4 SDU
L3 PCI + SDU
(sr IP, dest ip) + (sc port, dest port) 둘이 붙어 있는 구조이다.
크레딧 = 리시브쪽에서 송신측에게 더 보낼 수 있는 기회를 주는것?
UDP와 다르게 TCP는 congestion control을 수행
- Network의 혼잡을 방지하기 위해 자체적으로 flow control 수행(윈도우 크기 조절)
- 일시적 delay가 커질 수 있으나 network 전체 관점에서 이득
- Window management : 일반적으로 window가 크면 congestion을 유발할 가능성이 크므로 아래와 같은 규칙하에 관리
- slow start
- dynamic window sizing
Congestion Control
예를 들어 막 보내다가 congestion발생하면 임의로 윈도우 사이즈를 팍 줄인다음에 그다음부턴 천천히 확장한다.(이런 알고리즘은 굉장히 다양하다.)
!
udp : syn , error control, flow control 없다., 빠르다. 실시간 서비스.
tcp : syn , error control, flow control 3개 다 있다. 느리다. 안정적서비스 웹 문서, 메일
중요한 것은 l4의 핵심 기능은 port간 전달이다.
L3 PCI + SDU
(sr IP, dest ip) + (sc port, dest port) 둘이 붙어 있는 구조이다.
이것을 사용하는 두가지 알고리즘. L3,L4 로 동작하는 두가지 알고리즘. NAT,
Network Address Translation(NAT)
NAT 기술을 포함한 게이트웨이로부터~
IPv4를 오늘날까지 생존하게 한 알고리즘
절대적으로 수가 부족한 IP address를 국지적으로 사용할 수 있게 해줌
Small office, home office subnet에 적합
비슷한 개념을 확장하여 LTE에서도 활용중
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을 수행
- 초기 Outgoing packet에 대해 translation table 항목을 생성하고 port번호 부여
바깥에는 공인 IP로 보이고, 내부에서는 공인되지않은
NAT table에는
바깥에 대한 ip, port와 안쪽 ip,port를 매핑한다.
NAT의 역할
- 외부 IP 하나를 통해 여러 host들이 손쉽게 networking할 수 있음
- 부족한 IP address 수에 대한 강력한 보완책이 됨
- Internal network내 host를 감추는 역할
- 외부에서는 어떤 host든 single IP로 밖에 보이지 않음
- 한계점
- In-going packet으로 연결이 시작되는 서비스가 불가능
- 밖에서 사설 ip에게 데이터 전송하고 싶은데 불가능
Universal Plug and Play (UPnP)
P2P file-sharing 혹은 VoIP와 같이 외부에서 접속이 필요한 서비스를 NAT 환경에서 지원하기 위한 프로토콜
Host가 주변 NAT와 사전 configuration 진행
- Private IP/port와 public IP/port를 미리 지정
- Outside node에서 해당 IP/port로 internal host에 접속 가능
NAT 한계점
- Port 번호의 용도가 잘못됨
- 호스트를 지칭하는 것이 아닌, 서비스를 지칭해야한다.(소켓을 지칭해야한다.)
- 레이어드 아키텍쳐 컨셉이 어긋남
- IP header에 대한 관리는 L3에서만 해야함.(L4의 정보를 보고 L3를 바꾸는 행위)
- ip header에 대한 생성조작은 end-to-end단계에서만 다뤄져야함
- 하지만 ipv4의 부족을 막을 수 있는 기술.
이것은 프로토콜이라기 보단 게이트 웨이의 기술이다.
Firewall
→ Gateway → 1.1.1.1
패킷이 나갈때 다른 ip로 간다음에 redirect.하면 뚫을 수 있음.
- Three goals
- 모든 양방향의 traffic이 firewall을 통해서 지나가도록 함
- 외부 internet과 관리 대상인 내부 망의 boundary 역
- Local security policy에 의해 규정된 허용 트래픽만 통과시킴
- 유입/유출되는 traffic에 대해 관리자가 지정한 정책에 따라 흐름을 제어
- Firewall 자신은 보안에 매우 강해야 함
- firewall이 공격당하기 쉬우면 차라리 없는 게 더 좋음
Zero Trust (제로 트러스트)
-
제로 트러스트 보안 모델은 네트워크 내부와 외부를 구분하지 않고 모든 접근 요청을 검증하는 것을 기본으로 한다.
-
“절대 신뢰하지 않고 항상 검증한다(Never Trust, Always Verify)”는 원칙
-
사용자나 기기의 신뢰성을 항상 확인하여 보안을 유지. 최근 보안 환경에서 중요한 패러다임으로 자리잡고 있다.
Traditional packet filters
- Administractor -specific rule(관리자별 규칙)에 따라
- 게이트웨이 라우터는 L4의 헤더를 까볼 수 있으니깐
222.22/16 서비넷에서
1024번 부터 (임의로 사용하느 포트에 대해서)
80포트로 보내는 것을 허용
80번 포트로부터 나에게 오는 것을 허용
Stateful Packet Filter
connection 별로 필터링 규칙 적용
각 패킷에 대해 별도로 필터링 규칙을 적용하는 트레디셔널 패킷 필터와는 다름
커넥션의 핸드쉐이크 절차를 추적하며 필터링가능
Application Gateway
Filtering이 packet 기반(IP, port number 등)이 아닌 application 수준의 상황에 따라 이루어져야 할때가있음
▪ e.g.) 특정 internal user에게만 telnet service 허용 ▪ Application gateway
Firewall과 협업해서 Packet filter를 함
IP/TCP/UDP 보다 윗계층에서 application data를 확인
댓글남기기