layer4 transport layer
layer 4 over view
- Connection oriendted(TCP) vs. Connectionless(UDP0
- IP 및 PORT 번호로 식별
- 우편 전달할때 건물까지는 IP 사람한테는 transport layer이다
IP 계층에 대한 다양한 제어
- 동적 IP 주소 관리
- IP 변환(NAT)
- IP packet 흐름제어
Transport layer종류
applicaton에 따라 두가지 프로토콜 중 한가지를 사용한다.
- user datagram protocol(UDP) : unreliable, connectionless service, transparent
- Transmission control protocol(TCP): reliable, connectioin- oriented service, congestion control
- 두가지 모두 IP상위 계층 위치에서 end to ent 로 segment를 전달하는 역할을 가진다
- best effort and unreliable delivery service상에서
- application process에게 적절하게 packet 전달(Socket to socket)
Transport - layer multiplexing

- 한 host 내 다양한 process로부터의data 전달 역할
- multiplexing: 여러 socket을 통해서 SDU를 받아 전송 - 여러 process의 정보를 한번에 처리
- Demultiplexing: 수신된 PDU를 적절한 socket으로 전달
- Socket: process - transport layer 간 SAP
- Transport layer 에서의 식별자 역할
- 간단한 multiplexing /demultiplexing 기능의 프로토콜
- port 번호와 checkSum만 header로 붙음
- 사실상 IP의 기능만 하며, application계층에서 flow control등 기타 기능을 구현
- Segment 전송 방식도 심플함
- 연결과정없이 바로 전송 가능
-

- UDP socket 의 생성
- application process에서 socket 생성 즉시 transpork layer 에서 port 번호가 부여됨
- UDP segment 송수신
- two tuple: destination IP & port number
- 상대방 host 의 port 가 열려있으면 항상 전송 가능
- IP, port 번호를 지정해서 보내면 바러 전달이 됨
- Source port?
- return address 개념 - 데이터를 보내는 송신측의 source port 그리고 dest post가 다시 서버측에서는 송신측에서의 sourceport 가 dest post 가 되고 수신측에서는 dest post가 source port가 된다.
- UDP의 장점
- application-level 에서의 data 전송 제어가 손쉬움
- connection establichment 과정이 불필요함
- connection state에 대한 관리 및 관련 동작 제한이 없음
- packet header overhead가 적다.
- 보통 실시간 스트리밍 같은 동시 동작 데이터 전송이 아니면 의미가 없어지는 서비스에 사용된다.
Transmission control protocol
- connection oriented: connection establisihment 과정 존재
- connection 이 존재해야 segment 전달이 가능하다
- Four tuple: souce IP / port number , destinationIP/ port number
- source에 대한 정보까지 대조하여 socket에 mapping
- 이 때문에 UDP는 동일한 socket으로 들어오면 무조건 동일한 포트로 나가는데
- TCP의 경우에는 port number도 포함되어있어서 같은 socket으로 들오더라고 다른 port로 빠지는 것이 가능하다.
위 그림에서 같은 sourceport number를 가진 두 깩체가 있어도 sourceIP가지 고려해서 routing이 진행된다. 
- TCP는 reliable data transfer를 지원한다
- 즉, 재전송 및 ARQ 기능을 포함한다.
- 좌측 - reliable transfer를 원하면 TCP로 PDU를 전달한다
- transport layer 에서 알아서 처리 후 receiver에 전달한다.
- 우측 - TCP 내부 구현모습
- transport layer 에서 pdu data를 받아서 djEjgks 데이터를 보냈는지 header를 붙여서 network layer로 보낸다
- 수신측에서 받은 데이터를 재조합해서 제대로 왔는지 확인후 올려준다.
TCP connectino Establishment
process 간 3- way hand shake를 통해 수행된다
- 연결이 완료되어야 socket과 연결이 됨
- 특정 port로 connection eestablishment 메세지를 수신하고 나서 socket과 port 번호가 연동된다
- point to point: sigle sender/ receiver가 연결된다.
client process(보내는 쪽에서 intiation을 한다
secver process에서는 IP address/port 에 대한 연결승임
목적
- 상대방의 존재알림, optional parameter결정, transport entity resource 할당
- Segment format
- sequence no : Byte 시작점
- ACK no. : 다음번 수신을 해야할 Byte offset

- Retransmission과 함께 flow control수행
- 우의 그림설면
- 1401 바이트 까지 전송함(200단위)
- 1601바이트 가지 잘받았고 1000바이트 정도 여유 있다고 ack전송
- 아크 받기전에 1801까지 전송했음 근데 ack에서 1000바이트 정도 여유 있다니까 다시 2401까지 전부 전소함
- 인제 윈도우만큰 모두 전송했기 때문에 더이상 전송하지 않고 아크를 기다린다.
congestion control
- UDP와 다르게 TCP는 congestion control을 수행한다.
- Network의 혼잡을 방지하기 위해 자체적으로 flow control수행
- 일시적 delay가 커질 수 있으나 network 전체 관점에서 이득
- window management : 일반적으로 window가 크면 congestion을 유발할 가능성이 크모로 아래와 같은 큐칙하에 관리한다
- slow start & Dynamic window sizing
DHCP(dynamin host configuration protocol)
- 특정 host에 대해 IP를 동적으로 할당하기 위한 프로토콜
- 가능한 IP address pool 내에서 선택해서 요청 host 에게 할당
- 원래는 IP address 수가 부족한 상황을 보완하기 위한 목적으로 만들어짐
- 최근에는 wifi 나 subnet내 불특정 다수의 host에 대한 IP address를 편리하게 부여하기 위한 용도로 사용됨
- 서비스 시나리오
- 특정 host가 새로 등장
- DHCP SERVER로 ip 주소 요청
- IP 주소를 할당하는 responce msg 보냄

DHCP server discovery
- DHCP 서버를 찾는 메세지
- IP 255.255.255.255(broadcasting)
- 해당 Ip 로 보내면 브로드케스팅하겠다느 것이고, 그러면 모든 네트워크로 뿌리게 되어 모든 서버는 요청을 확인하게 된다
DHCP sever offer
- sercer 가 자신의 존재를 알려준다
- ip주소에 대해 제안함
- 이때도 boradcasting
DHCP request
- IP 주소 달라고 함
- 제안을 보고 요청사항을 보낸다
DHCP ACK
NAT - net work address translation
ipv4를 오늘날까지 생존하게 한 중요한 프로토콜
-절대적으로 수가 부족한 ip address를 국지적으로 사용할 수 있게 해줬다
small office, home office subnet에 적합하다
미리주어진 ip address와 port 를 기반으로 해서 실제 내부 IP와 연동을 해주는 프로토콜
SOHO small office home office
- 초기에는 isp로부터 일정 ip 대역을 할당 받았다
- 이 subnet 이 점점 커지면서 더 많이 요구하게 되면서 연속된 ip를 못받을 수 있게됨
network address translation
하나의 ip를 할당받아 내부의 subnet 의 여러 host들에게 공통의 서비스를 하는 방식
내부적으로 ip를 따로 주면서 외부로 나갈 때 할당된 하나의 ip를 사용
- out going Ip + prot 번호와 내부IP port 로 mapping한다
- nat translation table 을 통해 outer → internal routing 을 수행
- 초기 outgoing packet에 대해 translation table 항목을 생성하고 port 번호 부여한다
-
subnet 의 한 host 가 destination IP/PORT로 요청 subnet 의 gateway에 전달된다
- getway는 NAT translation table을 이용해서 LAN의 IP/Port 주소를 가지고 WAN 의 IP/ Port주소로 변환한다
-
gateway가 수정한 source IP/PORT 요청이 destination IP/Port로 간다
-
destination 에서 gateway가 설정한 source로 response 보낸다
그 SourceIP/ PORT는 gateway자체이고, 그걸 다시 내부 ip/ port로 변환해준다
-
subnet의 해당 host에게 응답이 전달된다.
NAT의 역할
외부 IP하나를 통해 여러 host들이 손쉽게 networking 할 수 있다.
-부족한 IP address수에 대한 강력한 보안책이다
internal network내 host르 감추는 역할을 한다
-외부에서 어떤 host든 sigle IP로 밖에 보이지 않으므로 보안성을 높여준다
한계점
in going packet으로 연결이 시작되는 서비스가 불가능하다
그냥 port 5001로 요청하면 nat는 tabe에 없는 정보이므로 처리할 수 없다
NAT Issue
-
port 번호의 용도가 잘못됐다
-
host를 지칭하는 것이 아는 service를 지칭해야한다
-
하나의 host내에서 여러 프로그램들의 요청을 구분하기 위한 port번호인데 요청 host를 구별하는 용도로 사용한다
-
layered architecture concept에 어긋난다
- ip header에 대한 관리는 L3에서만 해야하는데, L4에서 조작하고 있다
-
IP header 에 대한 생성 조작은 End to End 단계에서만 다뤄져야한다(Gate way 에서 가로채서 조작하므로)유배
-
ipv4의 다음
universal plug and play
- P2P file sharing 혹은 VolP와 같이 외부에서 접속이 필요한 서비스를 NAT환경에서 지원하기 위한 프로토콜이다.
- host가 주변 Nat과 사전 configuraion을 진행
- private IP/ port와 public IP/port를 미리지정
- outside node에서 대당 IP/port로 internal host에 접속가능
fire wall
- internal network 와 internet의 경계를 짓는 존재
- allowing sonme packets to pass and blocking orhers
- internal network - internet 간 대문 (gate way)역할
- Network security측면에서의 주요 역할
- network 관리자가 외부 접속에 대한 관리를 가능하게 해줌
- three goals
- 모든 양방향의 traffic이 fire wall을 통해서 지나가도록함
- 외부 internet과 솬리 대상이 내부망의 boundary 역할
- Local security policy에 의해 규정된 혀용 트래픽만 통과시킨다
- 유입 유츌되는 tracffic에 대해 관리자가 지정한 정책에 따라 흐름을 제어
- Fire wall 자신은 보안에 매우 강해야함
- fire wall이 공격당하기 위우면 차라리 없는게 더 좋음
traditional packet Filters
- 보안적인 측면과 더울어 internal network의 용도 및 관리자의 의도에 맞게 적절히 filter를 수동으로 설정할 수 있다
- IP와 port번호를 조합해서 규칙 생성이 가능하다
- 리눅스에서 방화벽 규칙을 설정할 수있다.
- 실제 firewall은 Aeccess Control List를 설정해서 구현한다.
Stateful packet filter
- connection 별도로 각각 filtering 규칙 적용
- 각 packet에 대해 별도로 filtering 규칙을 정하는 traditional packet filter와는 다르다
- connection의 handshake절차 등을 처적하면서 filtering을 할 수 있다
- 명시적으로 연결을 막는다
Application gateway
- filtering 이 packet 기반이 아닌 applicationo수주의 상황에따라 아뤄져야 할 때가 있다
- 특정internal user에게만 telnet service허용
- firewall 과 잘협업해서 packet FILTER를한다
- ip / tcp/udp보다 윗 계층에서 application data를 확인한다.
제목 없음