TCP/IP
Network Access Layer
-하위 물리, 데이터 링크 계층을 정의하지 않고, 모든 표준 및 임의 네트워크를 지원 가능하도록 한다.
-송신측 네트워크 접속 계층에서는 상위에서 전달받은 패킷에 MAC 주소 정보가 있는 헤더를 추가하여 프레임을 만들어 전송한다.
-수신측 데이터 링크 계층에서 헤더를 제거하여 상위로 전달한다.
Network Layer
ref: https://www.hardwaresecrets.com
Transport Layer
상위 계층에서 두 호스트 간 데이터 전송을 담당하며 TCP와 UDP를 사용한다.
네트워크 양단의 송수신 호스트 간 신뢰성 있는 전송기능을 제공한다.
전송되는 패킷에 오류와 중복이 없게 하고, 순서대로 받을 수 있도록 신뢰성 있는 전송을 보장하는 프로토콜이며, 그만큼 헤더의 오류코드에 대응할 수 있는 정보가 있다.Application Layer
FTP, SMTP, SNMP 등이 포함되며, 사용자가 사용하는 응용프로그램에서 사용되는 프로토콜이다.
TCP
연결형 서비스를 지원하는 전송 계층 프로토콜로, 3-way handshaking을 통한 연결 설정으로 신뢰성, 데이터 흐름 제어, 혼잡 제어를 제공한다. 시퀀스 넘버와 ack 넘버를 통해 순차적이고 신뢰성 있는 전송을 지원한다. 수신자 버퍼 오버플로우를 예방 가능하며 데이터가 안전하게 도착했는지 체크한다.
Port
TCP Segment and Header
-Sequence number: 0 ~ 2^32 -1 범위의 번호로, 초과 시 0으로 되돌아온다. 수신지 TCP에 세그먼트의 첫 번째 바이트가 시퀀스 넘버라는 것을 알린다.
-Acknowledgement number: 수신 노드가 송신 노드에서 수신하려는 바이트 번호로, 마지막 성공 시퀀스 넘버 + 1이다.
-플래그: 프로토콜 동작 제어용 비트 단위 플래그
-윈도우 크기: 데이터 버퍼인
윈도우의 사이즈.
3-way Handshaking - 연결 설정 시퀀스
4-way Handshaking - 연결 종료 시퀀스
TCP Flow control
TCP Connection control
일반적으로 TCP 커넥션은 클라이언트와 서버 간 연결 수립 후 데이터를 주고받은 뒤 커넥션을
끊고 통신이 필요하면 다시 커넥션을 설정한다. 하지만 이는 연결 수립에 따르는 시간이 추가적으로 소요되기
때문에 이에 대한 해결책으로 Persistent connection이 등장했다. 연결은 한번만 설정하고, 지속적으로 데이터를 주고받을 수 있다. 하지만 이 또한 데이터를 주고받을 때 하나의 데이터를 받았다는 응답도 처리해야 하는 TCP 특성상 지연이 발생할 수 있다.
HTTP Pipelining으로 이를 해소할 수 있는데, 연결 수립 후 데이터를 여러 번 받은 뒤, 순차적으로 여러 번 응답하는
방식이다.
'System Engineering > Network' 카테고리의 다른 글
HTTP - 3. URI, URL (0) | 2018.07.12 |
---|---|
TCP/IP - 2. IP (0) | 2018.07.10 |
HTTP - 2. Message (0) | 2018.07.06 |
HTTP 1. HTTP (0) | 2018.07.02 |
Protocol: TCP and UDP (0) | 2018.06.18 |