일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- AI
- LG Aimers
- supervised learning
- 머신러닝
- Classification
- LG Aimers 4th
- regression
- OpenAI
- 티스토리챌린지
- LLM
- 분류
- GPT-4
- 지도학습
- LG
- deep learning
- PCA
- 오블완
- 딥러닝
- 해커톤
- ChatGPT
- Machine Learning
- gpt
- 회귀
Archives
- Today
- Total
SYDev
[컴퓨터 네트워크] 3주차: TCP/IP 본문
경희대학교 컴퓨터공학부 유인태 교수님의 컴퓨터 네트워크 수업을 기반으로 작성한 게시물입니다.
TCP/IP 계층 구조 및 역할
- 인터넷을 사용하는 모든 통신의 기본적인 프로토콜
- 한 개의 프로토콜이 아닌 여러 가지 프로토콜들의 조합
- TCP/IP를 기반으로 BAN, PAN, LAN, MAN, WAN 상의 장치들이 데이터를 서로 주고 받음
- OSI 7 계층 참조 모델과 달리 -> TCP/IP 프로토콜 모델은 4개 계층으로 정의
-> 참조 모델 vs 프로토콜 모델 -> 기본, 기존이 되는 모델(반드시 따라야하는 것은 아님) 실제 모델과 차이가 있음 vs 실제 사용하는 모델
- TCP: 전송 계층의 전송 제어 프로토콜, IP: 인터넷 계층의 패킷 전달 프로토콜
-> 전송: 어떤 일이 있어도 목적지에 도달해야 함(재전송 이용)
-> 전달: 전달하려 노력하지만 도착하지 않을 수도 있음
- 모든 응용 계층 서비스들이 포트 주소, IP 주소, MAC 주소를 바탕으로 통신함
응용, 표현, 세션(Application, Presentation, Session) 계층 -> 응용(Application) 계층
전송(Transport) 계층 -> 전송(Transport) 계층
네트워크(Netwrok) 계층 -> 인터넷(Internet) 계층
데이터링크, 물리(Data Link, Physical) 계층 -> 네트워크 접속(Network Access) 계층
네트워크 접속 계층(Network Access Layer)
- OSI 참조 모델의 물리, 데이터링크 계층의 역할 수행
- 프레임의 송신과 수신을 담당
- ARP(Address Resolution Protocol): IP 주소를 바탕으로 MAC 주소를 알아내기 위해 사용하는 프로토콜
- RARP(Reverse ARP): MAC 주소를 바탕으로 IP 주소를 요청하기 위해 사용하는 프로토콜
- NIC, 스위치, 허브 -> 네트워크 접속 계층을 대표하는 네트워크 장치
- 오류 검출(error detection) 기능이 있으며(트레일러), IP 패킷을 프레임으로 캡슐화
- ARP request: Broadcast
- ARP reply: Unicast
인터넷 계층(Internet Layer)
- OSI 7 계층 참조 모델의 3계층(Network Layer) 역할 수행, 패킷 송수신 및 IP 주소 체계 관리
- 라우팅 기능 수행: 패킷 수신 -> IP 주소를 확인 -> 패킷을 목적지로
- 라우팅 경로는 어떤 라우팅 프로토콜을 쓰는지에 따라 달라짐
- IP 주소 체계: 인터넷 상의 장치를 정의하는 주소, v4(32bits address)와 v6(128bits address)가 있음 -> v4 프로토콜에는 보안 기능X, 주소 공간 부족 문제 > v6 등장
- ICMP(Internet Control Message Protocol): ping 명령어 -> 인터넷 제어 메시지 프로토콜, 장치 간의 통신 가능 여부를 확인
- ICMP는 Echo Request(요청)과 Echo Reply(응답)로 구성
전송 계층(Transport Layer)
- 종단 장치 간 통신이 완성되는 계층, TCP(Transmission Control Protocol)와 UDP(User Datagram Protocol)가 대표적이며, 포트 번호를 사용하여 통신
- TCP는 신뢰성 있는 통신 제공 -> UDP는 신뢰성 있는 통신을 제공하지 못함
- UDP는 TCP보다 데이터 처리 속도가 빠름(실시간 특성을 갖는 데이터에 적합)
- UDP -> 데이터 손실이 있더라도 빠른 데이터 처리 속도를 원할 때 (ex: 야구 중계..), TCP -> 속도는 보장 못해도, 신뢰성 있는 통신 (ex: 이메일..)
- UDP를 이용하는 응용프로그램에서 어느 정도 신뢰성 있는 통신을 해야 할 경우에는 -> 별도의 프로토콜을 함께 사용하여 신뢰성 제공 가능
- Well-Known 포트: 대부분의 시스템 간에 널리 이용되는 애플리케이션을 위해 기본값으로 설정되어 있는 포트 번호, 1~1023의 범위 가짐
응용 계층(Application Layer)
- OSI 7계층 참조 모델의 세션, 표현, 응용(session, presentation, application) 계층의 역할을 수행하는 계층
- 사용자 데이터 처리 계층
- HTTP, HTTPS, FTP, SMTP, PoP3, DNS 등
TCP 헤더
TCP의 신뢰성 통신
-> ack3은 2번 seg까지 오류 없이 수신했다는 것을 의미, ack3 수신 -> 3번 seg부터 모든 seg를 전송
TCP 헤더
- TCP는 연결 지향형(Connection-Oriented) 서비스를 제공하고 신뢰성 있는 데이터 전송을 보장, 이러한 기능은 TCP 헤더 내의 필드에 의해서 가능
- 출발지 포트 번호(Source Port Number): 출발지 호스트의 포트 번호를 정의한 16비트 필드, 임의 번호 사용
- 목적지 포트 번호(Destination Port Number): 목적지 호스트의 포트 번호를 정의한 16비트 필드, 주로 Well-Known 포트 번호
- 순서 번호(Sequence Number): TCP segment에 대한 순서번호를 표시, segment data를 재조립할 때 사용
- 수신 확인 응답 번호(Acknowledgement Number): 수신 장치에서 발신 장치로 segment의 전송 성공 여부를 알려주기 위해서 사용
- 헤더 길이(Header Length): TCP 헤더의 길이를 정의 -> 헤더 길이에 암묵적으로 4를 곱함(TCP Header의 크기는 기본 20byte ~ 60byte) -> 기본적으로 0101(5)로 표시되어 있으나, 4를 곱하여 생각(~1111(15) * 4 -> 60byte)
- 예약 비트(Reversed): 표준 정의 당시, 추후 추가 혹은 업데이트되는 내용을 위해 예약된 필드
- TCP flags -> 6비트의 control flag
- URG(Urgent): 긴급 데이터가 TCP 페이로드(payload)에 포함되어 있음을 알리는 필드, 이 비트가 1이면 우선적으로 처리
- ACK(Acknowledgement): TCP segment들에 대한 수신 확인을 알리기 위해 사용되며, 이 비트가 1이면 수신 확인 응답 번호 이전까지의 모든 segment들을 잘 받았음을 의미
- PSH(Push): 푸시 요청 -> 긴급한 데이터가 아닌 데이터를 빨리 처리하도록 요청
- RST(Reset): TCP 세션 리셋을 위한 제어 비트
- SYN(Synchronization): 통신을 개시하고자 하는 두 호스트 간의 세션 초기화 및 순서 번호 동기화
- FIN(Final): TCP 세션 종료에 사용하는 제어 비트
- 윈도우 크기(Window Size): 수신 확인 응답 번호의 수신 없이 전송할 수 있는 데이터 양을 정의
- TCP Checksum: TCP 패킷 오류 검사 필드, 수신 장치는 이 값을 이용하여 데이터 무결성 확인
- 긴급 포인터(Urgent Pointer): 긴급 데이터가 있는 지점을 가리키는 포인터 -> 긴급 데이터가 끝나는 지점
- 옵션(Option): 최소 0에서 최대 40바이트, TCP 통신에 대한 제어 및 관리를 위한 추가 옵션
UDP 헤더
- TCP: connection-oriented(연결 지향형) <-> UDP: connectionless(비연결형)
- 전송 계층에서 동작하며, 포트 번호를 기반으로 통신(Well-Known Port 기반)
- TCP보다 헤더가 간단, TCP같은 다양한 데이터 흐름 제어 기능은 없음
- 송수신 절차가 비교적 간단, 오류 검출 기능 제공으로 소량의 데이터 전송이나 실시간 데이터 전송에 효과적
- 비연결형 서비스 -> 데이터그램 간의 전후 관계를 고려하지 않고(sequence number 없음) 전송
- 출발지 포트 번호: 출발지 호스트의 포트 번호를 정의, 16비트 필드, 임의 번호
- 목적지 포트 번호: 목적지 호스트의 포트 번호를 정의, 16비트 필드, 주로 Well-Known 포트 번호
- 길이: 헤더와 데이터를 포함한 UDP 데이터 그램의 전체 길이
- 체크섬: 헤더와 데이터를 포함한 UDP 데이터 그램의 오류 검사
IP 헤더
- OSI 7 Layer 3계층 기준으로 패킷을 출발지에서 목적지까지 전달하는데 사용
- IP는 최선형(Best Effort) 서비스 기반으로 패킷 전달 -> 패킷이 목적지에 도착함을 보장하지는 못함. -> 패킷은 전송 도중 손실되거나 손상될 수 있다.
- 상위 계층의 TCP와 같은 신뢰성 프로토콜을 사용하여 최선형 서비스의 단점을 보완 -> TCP/IP
- IP 패킷 -> 출발지 장치가 전송한 순서대로 목적지 장치에 도착하지 않을 수 있음
- IPv4: 주소 고갈&보안 이슈 -> 버전6
- 버전(Version): IP 프로토콜의 버전을 나타냄
- 헤더 길이(Header Length): 옵션을 포함할 경우 최대 60바이트까지 사용 가능, 최소 단위는 20바이트
- DSCP(Differentiated Services Code Points): ToS(Type of Service) 필드로 불렸던 패킷의 우선 순위를 나타내는 필드
ToS
패킷의 성격(속도 or 신뢰성 우선)에 따라 데이터 전송 우선순위를 결정
- ECN(Explicit Congestion Notification): 패킷이 전송 경로에서 혼잡을 경험했을 때, 이를 발견하고 상대방에게 경고를 보냄. 명시적으로 네트워크에 혼잡이 있음을 알리는 필드 -> 전송 도중에 있던 혼잡을 목적지에 전달(foward ECN) -> 수신지에서 송신지로 다시 그 정보를 보내는 과정(backward ECN)
- 전체 길이(Total Length): 헤더와 데이터를 포함한 패킷의 전체 길이를 나타냄
- 식별자(Identification): 생성되는 패킷에 부여되는 고유한 값 -> 목적지에 도착한 패킷들은 이 식별자 값을 기준으로 원래 순서대로 재조립된다.
- 플래그(Flags): IP패킷의 분할 가능 여부, 마지막 fragment인지 아닌지 알리기 위해 사용
- 분할 위치(Fragment Offset): 하나의 패킷은 2계층 프로토콜의 MTU(Maximum Transmit Unit; 최대 전송 단위)에 따라 여러 개의 fragment로 분할되어 전송 -> 각각의 분할된 frag가 원래의 패킷을 기준으로 어느 위치에 있었는지 명시하기 위한 offset 값
IP packet을 frame으로 분할
body를 자를 때, header(20byte)는 매번 카피해서 자른 body(1480byte)에 붙여줌 -> fragment
fragment를 다시 IP로 복원할 때, 순서가 필요한데 그것이 Frag offset -> 0번째부터 얼마나 떨어져 있느냐
또한, flags를 통해서 마지막 frag를 확인하면, 해당 frag를 기준으로 이전에 받은 frag로 IP packet을 재조립 -> 제일 마지막 flag는 more flag가 0
프로토콜 별로 MTU가 다름 -> 이더넷의 경우 대ㅑㄱ 1500byte -> 요즘은 이더넷이면 이더넷에 맞게 IP 패킷을 1460byte 맞춰서 제작 + 헤더(20) + 헤더(20)
- TTL(Time-to-Live): 패킷의 루핑(looping)을 막기 위해 사용하는 패킷의 수명을 나타내는 값. 라우터 통과 시마다 1씩 감소, 이 값이 0이 되면 패킷은 폐기 -> UDP의 경우는 괜찮지만, 재전송을 요구하는 protocol의 경우에는, 루핑하는 패킷에 재전송 요청을 반복하면서 통신 혼잡을 가중화
- 프로토콜(Protocol): 서비스 대상 프로토콜
- 헤더 체크섬(Header Checksum): IP 헤더 오류 검사
- 출발지 IP 주소(Source IP Address): 출발지 장치의 IP 주소
- 목적지 IP 주소(Destination IP Address): 목적지 장치의 IP 주소
- 옵션(Option): 패킷의 전송 경로를 포함한 IP 프로토콜의 동작 옵션을 정의
참고자료
'3학년 1학기 전공 > 컴퓨터 네트워크' 카테고리의 다른 글
[컴퓨터 네트워크] 5주차: 라우팅 개념과 정적 라우팅 구성 (1) | 2024.04.09 |
---|---|
[컴퓨터 네트워크] 4주차: IP 주소 체계, IP 주소와 서브넷팅, DHCP, SLAAC (0) | 2024.04.07 |
[컴퓨터 네트워크] 2주차: OSI 7 Layer (0) | 2024.03.13 |
[Getting Started with Cisco Packet Tracer] Module 2 (0) | 2024.03.11 |
[Getting Started with Cisco Packet Tracer] Module 1 (3) | 2024.03.05 |