일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- FetchType
- 낙관적락
- 즉시로딩
- BOJ
- querydsl
- 백트래킹
- 비관적락
- fetch
- shared lock
- 동적sql
- SQL프로그래밍
- CHECK OPTION
- 데코레이터
- 스프링 폼
- 이진탐색
- 다대일
- 일대다
- 힙
- 연관관계
- 지연로딩
- 다대다
- dfs
- exclusive lock
- PS
- JPQL
- 유니크제약조건
- 스토어드 프로시저
- 연결리스트
- execute
- eager
- Today
- Total
흰 스타렉스에서 내가 내리지
TCP & UDP 본문
Transport Layer :
End Point 간 신뢰성있는 데이터 전송을 담당하는 계층
신뢰성 : 데이터를 순차적, 안정적으로 전달
전송 : 포트 번호에 해당하는 프로세스에 데이터를 전달
만약 Transport Layer 가 없다면?
1. 데이터의 순차 전송이 원활히 되지 않는다.
2. Flow (흐름 문제)
- 원인 : 송수신자 간의 데이터 처리 속도 차이
3. Congestion (혼잡 문제)
- 원인 : 네트워크의 데이터 처리 속도 (ex. 라우터)
결과 : 데이터의 손실 발생
TCP (Transmission Control Protocol)
- 신뢰성있는 데이터 통신을 가능하게 해주는 프로토콜
- 특징 : Connection 연결 (3 way-handshake) - 양방향 통신
- 데이터의 순차 전송을 보장
- Flow Control (흐름 제어)
- Congestion Control (혼잡 제어)
- Error Detection (오류 감지)
세그먼트 (Segment) - TCP 프로토콜의 PDU
세그먼트 : IP프로토콜의 패킷처럼 프로토콜 안에서 처리되는 데이터의 단위
데이터에 TCP Header를 붙여진 조각 하나를 세그먼트라고 한다.
TCP Header
중요한 것 : 9비트의 플래그 필드. TCP의 연결을 제어하고 데이터를 관리한다.
ACK : 수신자가 다시 전송을 해줄 때, 제어할 때 쓰는 플래그 비트
SYN : TCP가 커넥션 연결할 때 쓰이는 플래그
FIN : TCP가 커넥션을 끊을 때 쓰이는 플래그
TCP의 3-way handshake
1. SYN
클라이언트에서 서버에 연결신청을 할 때 SYN 비트를 1로 설정해 패킷 송신
2. SYN + ACK
서버는 데이터를 받았다는 것을 알려주기 위해 SYN, ACK 비트를 1로 설정해 패킷 송신.
커넥션은 양방향이기 때문에 서버도 클라이언트에 연결신청을 하기 위해 SYN 비트를 1로 설정
3. ACK + Packet
클라이언트도 서버의 연결신청을 받아 알았다는 뜻으로 ACK 비트를 1로 설정해서 패킷 송신
TCP의 데이터 전송 방식
1. Client 가 패킷 송신
2. Server에서 ACK 송신
3. ACK를 수신하지 못하면 재전송
이러한 과정을 통해서 TCP는 신뢰성 있는 통신을 이루고 있다.
4 way-handshake (Connection close)
1. 데이터를 전부 송신한 Client가 FIN 송신
2. Server가 ACK 송신
3. Server 에서 남은 패킷 송신 (일정 시간 대기)
4. Server가 FIN 송신
5. Client가 ACK 송신
클라이언트가 데이터를 다 보냈다고 해서, 서버도 데이터를 다 보낸게 아님.
서버도 아직 보내줄 데이터가 남아있을 수도 있음.
그래서 잠시동안 대기를 이후에 서버에서 남은 패킷을 전송하고, 클라이언트처럼 FIN 비트를 1로 설정해서 패킷 전송.
이제 클라이언트도 알았다는 뜻으로 ACK를 보내고, 서버는 그제서야 CLOSED 상태가 된다.
TCP의 문제점
- 전송의 신뢰성은 보장
- 매번 Connection을 연결해서 시간 손실 발생 (3 way-handshake)
- 패킷을 조금만 손실해도 재전송
UDP (User Datagram Protocol)
- TCP보다 신뢰성이 떨어지지만 전송 속도가 일반적으로 빠른 프로토콜
- 순차전송 X, 흐름제어 X, 혼잡제어 X
- Connectionless(3 way-handshake X)
- Error Detection
- 비교적 데이터의 신뢰성이 중요하지 않을 때 사용 (ex. 영상 스트리밍)
User Datagram - UDP 프로토콜의 PDU
TCP 세그먼트와의 차이점 :
TCP 세그먼트는 데이터를 쪼갰는데, UDP는 데이터를 쪼개지 않는다.
UDP Header
UDP의 데이터 전송 방식
커넥션이 없어서 확인도 안하고 무조건 보냄.
'Network' 카테고리의 다른 글
사설IP & NAT & CIDR (0) | 2023.08.28 |
---|---|
DHCP (0) | 2023.03.28 |
VPC, public/private subnet (0) | 2023.03.28 |
서브넷 마스크, subnet mask (0) | 2023.03.28 |
OSI 7 Layer (0) | 2023.03.20 |