일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 제로 트러스트
- 클라우드
- Java
- tcp
- Linux
- 보안이슈
- 네트워크
- 트랜잭션
- 기업간의 협업 중요성
- AWS
- Cloud
- 개발자
- security
- 러시아
- 오늘의 오답노트
- 스프링부트
- 리마2급2차
- 보안
- CVE
- 리눅스 마스터
- 스프링
- 프로토콜
- db
- 리눅스
- SSO
- 악성코드
- 깃허브
- 오답노트
- 네관사2급
- 네트워크관리사
Archives
- Today
- Total
일단 진행시켜
[3,4계층 프로토콜] TCP/IP, UDP 본문
1. 서비스의 종류
1.1. 연결형 서비스
- 데이터 전송 전에 데이터의 전송 경로를 미리 결정
- 경로가 하나로 이어져 있음 = 이동 경로는 1개뿐
- 주소 필요 x
- 연결되어 있어, 상대적으로 신뢰성이 높음
- TCP
1.2. 비연결형 서비스
- 사전에 경로 설정 x, 패킷 단위로 결정
- 연결되어 있지 않음 = 주소 필요 o
- 서로 다른 경로를 통해 전송됨
- 전송 경로가 여러 개가 존재할 수 있음
- 도착 순서가 일정하지 않음
- 따라서, 상위 계층에서 순서를 재조정해야 함
- 패킷의 도착을 100% 보장하지 않으므로 훼손/분실 위험 등이 존재할 수 있음
- 이 또한 상위 계층에서 분실 오류를 복구해야 함
- IP, UDP
연결형 서비스 | 비연결형 서비스 | |
경로 | 미리 결정 | 패킷 단위로 결정 |
주소 | 필요 o | 필요 x |
방식 | 신뢰성 | Best Effort |
2. IP
- 네트워크 계층의 비연결형 프로토콜
- 호스트 주소 지정, 패킷 분할 및 조립 담당
- 헤더 체크섬만 제공
2.1. IP header
0 ~ 3 | 3~7 | 7~15 | 15~31 |
Version number (IPv4 or 6) |
header length (16 or) 20 byte |
service type "특정 data는 빨리/늦게 전송" 형평성 어긋남 그래서 잘 안 씀 |
Packet length 40byte 이상 프레임 54-이더넷14=40 |
Identification 패킷 분할해서 번호 매겨주어 전송 (커팅된 걸 번호대로 붙이면 원본이 되게) 수많은 데이터를 분할/식별 |
DF | MF | Offset DF: Don't Fragment 패킷 분할 가능: 0, 불가능:1 MF: More Fragment 마지막 패킷:0, 그외:1 Offset: 병합을 위한 순서파악 |
||
Time to Live (TTL) 문제 발생 data는 완벽 전송되지 못 한다. 따라서, 일정시간이 지나면 사라지도록 처리 원활한 통신을 하기 위함이다. * TTL을 통해 OS 종류를 알 수 있음 |
Transport (4계층) 수신자 기준, "어느 계층으로 전달해?" TCP: 06 UDP: 17 |
Header Checksum 목적: 무결성 데이터 변조 여부 체크. 체크섬이 다르면 문제 있음 |
|
Source Address : 송신 호스트의 주소 |
|||
Destination Address : 수신 호스트의 주소 |
그 아래 Option, packet length도 있는데(총 32비트) 이건 지금 쓰지 않아서 기록할 필요는 없을 것 같다. (요즘 정확도가 올라가서)
✔️ IP 헤더 크기 = 20byte
✔️ 3 계층 지원. Best effort 방식.
✔️주소는 4byte
✔️ Identification : 패킷 분할/식별(데이터 크니까 쪼개서 보내야 안정적임)
✔️ DF : Don't fragment(가능 0)
✔️ MF: More fragment(마지막 0)
✔️ Offset : 쪼갠 거 다시 병합하려면 붙이려는 순서를 알아야 한다.
위 내용은 꼭 기억해 두자.
3. TCP
- 4 계층 연결형 프로토콜
- 전이중 방식의 양방향 가상 회선을 제공(ex. 무전기)
- 논리적으로 1:1 연결 (<-> 2 계층은 물리적으로 1:1 연결)
3.1. TCP header
0 | 3~9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 23 | 31 | |
Source Port | Destination Port | ||||||||||
Sequence Number : 순서 번호 | |||||||||||
Acknowledgement Number : 응답 번호 "알아먹음"을 계속 회신하고, 다음 원하는(순번 seq) 데이터를 지정 |
|||||||||||
TCP header length |
Reserved 추후예약 기능무조건 0 |
URG | ACK | PSH | RST | SYN | F I N |
Window 수신 윈도우의 버퍼 크기 제어 ➡️ 흐름제어 남은 Buffer(여분의 수용공간)을 알려줌 |
|||
Checksum : 변조 확인. 무결성 보장 |
Urgent Pointer URG에 긴급한 data 표시 얘도 지금은 안 씀 |
➕ 무결성 = 완전성 + 정확성 + 일관성
3.2. TCP header - flag bit
각각 1bit
URG | urgent. 긴급한 거 먼저..! IP header - service type과 같음 따라서, 지금은 URG 안 쓴다!! |
ACK | "정상 수신 = 승인"을 의미 |
PSH | push. 수신자 입장: 상위계층으로 올림 |
RST | reset. (= FIN이 없음) 비정상적인 seq-에 대한 응답 ex. 게임하다 튕기는 거 |
SYN | 양 단의 동기화(1:1)를 위한 요청 맨 처음에 SYN=1로 설정하여 전송 ex. 대화를 위해 이름을 부름 |
FIN | finish. 끝난 걸 알림 연결 종료 요청 (<-> SYN) |
✔️ 신뢰성 보장 방식(<-> Best effort방식)
✔️ 변형/ 분실 ➡️ 오류 대응: 재전송
✔️ 수신 버거움 등 ➡️ 속도 제어: 받을 수 있게
✔️ 수신자를 수시로 체크하며 데이터 전송 ➡️ 신뢰성 보장
3.3. MTU(Maximum Transmission Unit)?
이더넷(Ethernet) 프레임을 제외한 IP Datagram의 최대 크기
MTU=1500. 실제 data=1460
1500 - TCP header - IP header = 1460
1460까지 하나의 패킷으로 전송될 수 있음!
이를 MSS(Maximum Segment Size)라고 부른다.
✔️ MTU: 전송될 수 있는 최대 크기의 패킷 또는 프레임(이더넷 헤더 제외)
✔️ MSS: 분할하지 않고 한 번에 보내는 최대 크기 = TCP의 데이터 길이(payload)
✔️Ethernet MTU=1500
✔️Ethernet MSS=1460
4. UDP
- 4 계층 비연결형 프로토콜
- 정확도 < 속도 중시 (ex. 게임)
- 현재 잘 쓰진 않음
'🌐 Network 기본부터 차근차근' 카테고리의 다른 글
[네관사 2급] 네트워크 일반 오답노트 (0) | 2024.08.25 |
---|---|
[네관사 2급] TCP/IP 오답노트 (0) | 2024.08.25 |
네트워크 중요 공격기법 (0) | 2024.08.11 |
[오류 제어] 긍/부정 응답 프레임, 흐름 제어❓ (0) | 2024.08.08 |
[net] OSI 참조 모델 및 기본 용어 정리 (0) | 2024.08.06 |