

지난 실습에 이어 네트워크를 확장시켰다.
Etherenet dst / src IP src / dst
PC0 Outbound 00D0.D383.9B01/ 192.168.40.11/
0001.C784.8585 192.168.41.2
Router Inbound (Giga 0/0) 00D0.D383.9B01/ 192.168.40.11/
0001.C784.8585 192.168.41.2
Router Outbound (Giga 0/1) 0060.700A.3701/ 192.168.40.11/
00D0.D383.9B02 192.168.41.2
DNS Server Inbound 0060.700A.3701/ 192.168.40.11/
00D0.D383.9B02 192.168.41.2
전송 계층이 데이터를 전달받아 이를 세그먼트로 분할하고, 이를 목적지까지 안전하게 전송하는 역할
통신 세션을 관리
에러 복구와 흐름제어 기능
대표적인 프로토콜은 TCP, UDP
통신을 시작하기 전에 논리적인 연결을 설정
데이터를 전송한 후에는 명시적으로 연결을 해제하는 방식
통신을 시작하기 전에 논리적인 연결을 설정하지 않고 각각의 데이터 패킷을 독립적으로 전송하는 방식의 통신
UDP 같은 프로토콜에서 사용되며, 간단하고 빠른 전송 지원
수신자와 송신자 간의 데이터 전송 속도를 조절하여 데이터 넘침을 방지
연결형 통신에서 주로 사용됨결형 통신에서 주로 사용됨
TCP에서 Window Size 등을 조절하여 구현됨
수신자는 자신이 처리할 수 있는 데이터양을 송신자에게 알려줌
네트워크 내에서 혼잡이 발생하지 않도록 데이터의 전송속도를 동적으로 조절
네트워크의 부하나 혼잡 상태를 감지하여 조절하는데 사용됨
혼잡이 발생하면 전송 속도를 줄이거나 중지함
혼잡이 완화되면 다시 전송 속도를 증가시킴
네트워크 상에서 통신을 하기 위해 컴퓨터나 기타 네트워크 장치 내에서 특정 프로세스나 서비스를 식별하는 데 사용되는 고윺한 번호
TCP/IP에서는 0부터 65535까지 총 65536개의 포트가 있음
[Service Name and Transport Protocol Port Number Registry]
https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml
0~1023번 포트
이 범위의 포트 번호는 특정한 서비스를 위해 예약되어 있음

1024~49151번 포트
이 범위의 포트는 특정 애플리케이션에서 사용하기 위해 IANA(Internet Assigned Numbers Authority)에 등록하여 사용 가능
49152~65535번 포트
일반적인 애플리케이션에서 동적으로 사용
특별히 예약되어 있지 않음
네트워크 상에서 데이터를 안정적으로 전송하기 위한 프로토콜 중 하나
신뢰성 있는 연결을 제공
데이터의 순서를 보장, 오류 복구 수행
하나의 송신 측과 하나의 수신 측이 통신하는 1:1 통신(point-to-point)
연결은 SYN(연결 요청)과 ACK(확인 응답)를 사용하여 확립할 수 있음
신뢰성 있는 연결을 하려면 데이터 전송 전에 패킷 교환을 3번 확인
클라이언트가 서버에 연결 요청(SYN)
클라이언트가 초기 시퀀스 번호(seq=0)를 갖는 SYN 패킷을 보냄
서버는 SYN+ACK 패킷으로 응답하고 초기 시퀀스 번호를 알려줌
클라이언트가 응답 및 데이터 요청(ACK 및 HTTP 요청)
클라이언트가 ACK 패킷을 보내고 HTTP GET 요청을 서버로 전송
클라이언트 ACK 패킷에는 초기 시퀀스 번호, 확인 응답 번호가 포함됨
서버가 응답 및 데이터 전송(ACK 및 HTTP 응답)
서버가 클라이언트에게 ACK 패킷으로 응답, HTTP 응답을 클라이언트로 전송
서버의 ACK 패킷에는 초기 시퀀스 번호, 확인 응답 번호가 포함됨
클라이언트가 서버의 응답 확인(ACK)
클라이언트가 서버의 HTTP 응답에 대한 확인으로 ACK 패킷을 보냄
클라이언트의 ACK 패킷에는 초기 시퀀스 번호, 확인 응답 번호가 포함됨

Source Port: 송신자의 포트 번호
Destination Port: 수신자의 포트 번호
Sequence Number: 세그먼트 데이터 조각이 전체 데이터 스트림 어디에 위치하는지 식별
Acknowledgment Number: 수신자가 받은 데이터의 일련번호를 응답함으로써 송신자에게 어떤 데이터까지 받았는지 알려줌
Data Offset: 헤더의 길이를 32비트 워드 단위로 나타냄
Flag: 세그먼트의 제어 정보
CWR(Congestion Window Reduced):
송신 호스트가 TCP 세그먼트를 수신하고 이에 대한 혼잡 제어 메커니즘 응답을 했음을 나타내는 플래그
ECE(ECN-Echo):
SYN 플래그가 설정된 경우 (1):
TCP 피어가 ECN(ECN-Capable Transport)을 지원함을 나타냄
SYN 플래그가 해제된 경우 (0):
IP헤더의 Congestion Experienced 플래그가 설정된 패킷이
정상 전송 중에 수신되었음을 나타냄
이는 TCP 송신자에게 네트워크 혼잡을 나타냄
URG(Urgent): Urgent pointer 필드가 의미 있음을 나타냄
ACK(Acknowledgment): 수신 확인 번호가 유효함을 나타냄
PSH(Push): 버퍼된 데이터를 즉시 수신 애플리케이션으로 전송하도록 요청
RST(Reset): 연결을 초기화하거나 연결 오류를 나타냄
SYN(Synchronize): 일련번호를 동기화함을 나타냄
양쪽에서 보내는 첫 번째 패킷만 이 플래그를 설정해야 함
FIN(Finish): 송신자로부터의 마지막 패킷을 나타냄
Window Size:
수신자가 현재 받을 수 있는 데이터의 양을 나타내는 값
흐름 제어에 사용됨
상대방에게 쌓인 세그먼트는 Buffer에 일시적으로 보관
데이터가 대량으로 전송되어 보관되지 못하고 넘치는게 Overflow

Checksum: 세그먼트의 오류를 검출하기 위한 체크섬 값이 포함되어 있음
Urgent pointer: URG 플래그가 설정된 경우 이 16bit 필드는 마지막 긴급 데이터 byte를 나타내는 시퀀스 번호에서 offset됨
Options: TCP 헤더의 Options 필드는 최대 320bit까지 가변 길이로, 데이터 offset 필드에 의해 결정됨
비연결형
신뢰성이 없는 전송 프로토콜
흐름제어, 오류제어 또는 재전송을 하지 않음
내용이 전송 중에 손실될 수 있고 전송되는 세그먼트의 순서가 바뀔 수 있음
TCP보다 간단하고 빠름

Source Port: 패킷이 어디서 왔는지 식별
Destination Port: 패킷을 어디로 보낼지 식별
Length: UDP 헤더와 데이터의 전체 길이
Checksum: 데이터그램의 오류 검출
Ethernet Header: src/dst MAC Address -> LAN Network 내에서 시스템을 식별
IP Header: src/dst IP Address -> 인터넷을 할 때, 시스템을 식별
UDP/TCP Header: src/dst Port Number -> 시스템 내 어떤 프로세스가 데이터를 처리할지
Ethernet MTU - 1500 byte (IP Header 포함)
Data payload + TCP 20byte + IP 20byte < 1500
1460byte(L4 단편화)
-> MSS(Maximum Segment Size)
Server와 Client가 동기화하는 정보: session 정보, sequence number, window size, MSS
1. TCP, UDP 프로토콜은 어떤 프로토콜이며 어떤 특징이 있는가?
TCP는 신뢰성을 보장하는 연결형 프로토콜
연결 지향, 신뢰성 보장, 순서 보장, 오류 제어, 혼잡 제어
UDP는 연결을 설정하지 않고 데이터를 빠르게 전송하는 비연결형 프로토콜
비연결형, 신뢰성 없음, 순서 보장 없음, 오버헤드 적음, 실시간 통신에 적합
2. RFC 6335의 Port Number 3개 분류는?
1. Well-Known Ports: 0 ~ 1023
2. Registered Ports: 1024 ~ 49151
3. Dynamic or Private Ports: 49152 ~ 65535
3. TCP 통신과정이 어떻게 되나요?
3-way Handshake(SYN -> SYN/ACK -> ACK)
데이터 전송(Segment 단위)
4-way Handshake
(FIN → 클라이언트 → 서버
ACK ← 서버 ← 클라이언트
FIN ← 서버 ← 클라이언트
ACK → 클라이언트 → 서버)
4. Linux 시스템에서 세션정보를 확인하는 명령어는?
who – 현재 로그인한 사용자 목록 조회
w – 로그인된 사용자 및 실행 중인 프로세스 정보 조회
whoami – 현재 사용자 확인
id – 사용자 및 그룹 정보 확인
last – 로그인 기록 확인
ps – 현재 실행 중인 세션 프로세스 확인
ss – 네트워크 연결 상태 (SSH 세션 포함)
pkill – 특정 사용자 세션 종료
kill – 특정 TTY 세션 종료
logout – 현재 세션 종료 (사용자용)
5. 10가지 서비스에 대해 TCP/UDP 프로토콜과 System Port번호를 써주세요.
HTTP TCP 80
HTTPS TCP 443
FTP TCP 20(데이터), 21(제어)
SSH TCP 22
Telnet TCP 23
SMTP TCP 25
POP3 TCP 110
IMAP TCP 143
DNS UDP/TCP 53
DHCP UDP 67(서버)/68(클라이언트)
