TCP/IP
4. Application
3. Transport
2. Internet
1. Network Interface
Transport Layer
- 여러 컴퓨터로부터 받은 데이터를 transport layer에서 분류하고 application layer의 각각의 프로그램에 전달
- 분류 기준은 port 번호로 application 구분
- TCP: 데이터가 정확하게 전달되어야 하는 통신 (웹, 이메일)에 사용되는 프로토콜
- UDP: 전송 속도가 빨라야 하는 통신 (VoIP, 동영상 스트리밍)
Port Number
- transport layer의 protocol은 packet의 port 번호를 보고 해당되는 application으로 packet을 전달함
1. 범위
- 0 ~ 65525번
- well-known ports: 서버 프로그램이 수신 대기할 때 사용하는 포트 (0 ~ 1023번)
- registered ports: 벤더가 할당받아 사용하는 포트 (1024 ~ 49151번)
- dynamic ports: 클라이언트 프로그램이 사용하는 포트 (49152 ~ 65535번); 클라이언트가 사용하는 포트 번호는 그때마다 다름
2. 과정
1) 클라이언트가 사용할 포트 결정; ex) 49155
- Ip 주소와 조합하여 사용
2) 서버의 포트에 접속 ex) 80
3) 통신이 종료되면 클라이언트는 포트 반납
Transmission Control Protocol (TCP)
- transport layer의 protocol 중 하나로 정확한 데이터 전달이 필요한 통신에 사용
- 신뢰성을 위해 데이터를 segment 단위로 분할, 속도 조종, 재전송 실시
- 일련번호와 최대 세그먼트 크기 (MSS; Maximum Segment Size)를 커넥션을 맺을 때 조율 실시
- 연속된 데이터를 몰아서 보내 전송 속도를 높임 (단, 동일한 확인응답 번호가 3번 연속이면 전송 실패로 간주)
- Buffer: 수신 측에서 수신한 데이터를 일시적으로 보관하는 영역
- flow control: 수신 측은 응답을 보낼 때 TCP header의 window size를 설정해 알려줌
- window probe: buffer가 가득차면 전송은 잠시 멈추고 송신 측에서 window probe를 보내 window size 파악하여 재개 여부 결정
- Selective ACKnowledgement (SACK): 송수신 측 모두 지원할 경우 중간에 누락된 패킷만 재전송 가능
1. TCP 헤더의 구조
- sequence number: 송신한 바이트 수
- acknowledgement number: 수신한 바이트 수
- data offset (HLEN): TCP 헤더의 길이
- checksum: 데이터 훼손 확인 정보
- window size: 한번에 수신할 수 있는 데이터 크기
- control bits: 현재 통신 상태를 표현하는 플래그 / TCP 통신을 제어하는 용도로 사용
ex) URG, ACK, PSH, etc.
2. 3-way handshake
- 커넥션 연결을 통해 데이터를 전송할 수 있는 상태로 만드는데 3-way handshake를 사용
- SYN: 통신시작 시 ON
- FIN: 통신종료 시 ON
- ACK: 데이터가 도착했는지 확인응답하는 플래그로 ACK ON 응답이 돌아오지 않으면 전송 실패를 의미
User Datagram Protocol (UDP)
- TCP에 비해 간단한 protocol
- 통신과정에서 데이터 손실이 발생해도 문제없는 서비스에 사용 (동영상 스트리밍 등)
- broadcast, multicast 기능을 사용해 하나의 패킷을 여러 수신지에 전달
- UDP를 사용해 통신하는 application layer에 안정성을 위해 flow control, congestion control 기능으로 신뢰성 보완
1. UDP 헤더의 구조
- UDP length: 헤더 길이와 데이터 길이의 합
- checksum: 데이터 훼손 확인 정보
'MLOps > Network' 카테고리의 다른 글
Network Interface Layer (TCP/IP) (0) | 2022.01.07 |
---|---|
Internet Layer (TCP/IP) (0) | 2022.01.06 |
Application Layer (TCP/IP) (0) | 2022.01.05 |
컴퓨터 네트워크 (0) | 2022.01.04 |