WWW, email, file 전송은 모두 TCP(전송 계층)에 의존한다. SSL/TLS는 종종 TCP 위에서 실행한다.
TCP는 데이터를 보내기 전에 만들어진 클라이언트와 서버 사이를 연결 기반의 프로토콜이다. 서버는 연결이 되기 전에 클라이언트의 요청을 들어야 한다. Three-way handshake, 재전송, 에러 감지는 모두 신뢰성을 높이지만 latency를 늘리기도 한다. (속도가 느리다) 신뢰성 있는 데이터 스트림 서비스를 요구하지 않는 애플리케이션은 보통 UDP(User Datagram Protocol): <신뢰성보다는 시간을 더 우선시하는 비연결 데이터그램 서비스>을 선호한다. TCP는 네트워크 혼잡 회피를 사용한다. 하지만 DOS, 하이재킹 등의 취약점이 존재한다.
TCP는 애플리케이션 프로그램과 IP 사이의 중간에서 커뮤니케이션 서비스를 제공한다. 인터넷 모델의 전송 계층에서 호스트-투-호스트 연결을 지향한다. 애플리케이션은 데이터를 보내는 특정 머캐니즘에 관심이 없다. 전송 계층에서, TCP는 모든 핸드셰이킹과 전송 사항들을 처리하고 보통 네트워크 소켓 인터페이스를 통해서 애플리케이션과의 네트워크 연결의 추상화를 나타낸다.
프로토콜 스택의 낮은 단계에서는 네트워크 혼잡, 트래픽 로드 밸런싱, 또는 예측 불가능한 네트워크 행동으로 인해, IP 패킷이 유실되거나, 복제되거나, 순서가 뒤바뀐채로 전달될 가능성이 있다. TCP는 이러한 오류를 감지하고 잃어버린 데이터에 대한 재전송을 요청하고, 순서를 정렬하며 네트워크 혼잡을 최대한 줄여 다른 문제 가능성을 줄인다.
TCP는 속도 보단 정확한 전달에 최적화 되어 있다. 그래서 실시간 애플리케이션 (IP를 통한 보이스)에는 적합하지 않다. 대신에 UDP 보다는 RTP(Real-time Transport Protocol)이 보통 추천되고 있다.
TCP는 전달받은 모든 바이트가 동일하고 보낼 때처럼 똑같은 순서로 보장되는 신뢰 가반의 바이트 스트림 딜리버리 서비스이다. 많은 네트워크들이 보내는 패킷은 신뢰성이 없어서, TCP는 재전송과 긍정적인 인지(acknowledgement)로서 알려진 기술을 활용한다. 이러한 기술은 리시버에게 데이터를 잘 받았음을 나타내는 acknowledgement 메시지를 보내도록 요구된다. 샌더는 보낸 각각의 패킷을 추적하고 패킷이 언제 전송됐는지의 시간을 잰다. 만약 ACK 메시지를 받지 않았는데 타이머가 종료된다면 샌더는 패킷을 다시 보낸다. 타이머는 패킷이 유실되거나 훼손되었을 때 필요하다.
IP가 데이터의 정확한 전달을 처리한다고 하면, TCP는 세그먼트를 추적한다. - 메시지가 네트워크를 통해서 효율적인 경로 설정의 목적으로 분리되어지는 데이터 전송의 각 유닛(단위). 예를 들어, 서버가 HTML 파일을 보내면 서버의 TCP 소프트웨어 계층은 파일을 세그먼트로 나누고 각각 네트워크 스택에 있는 인터넷 계층으로 전송한다. 인터넷 계층 소프트웨어는 도착 IP 주소를 포함하는 헤더에 더함으로써 각각의 TCP 세그먼트를 IP 패킷으로 캡슐화한다. 도착 컴퓨터의 클라이언트 프로그램이 패킷을 받으면, 전송 계층의 TCP는 리시빙 애플리케이션에 파일 컨텐츠를 보냈던 그대로 세그먼트를 재조립하고 정확한 순서와 무결성을 보장한다.
TCP는 데이터 스트림으로부터 데이터를 받고 그것들을 청크 형식으로 쪼갠 다음 TCP 세그먼트를 만들어 TCP 헤더에 더한다. 그런 다음 TCP 세그먼트는 IP 데이터그램로 캡슐화되고 교환된다.
TCP 세그먼트는 세그먼트 헤더와 데이서 색션으로 구성된다. 세그먼트 헤더는 10개의 필수 필드와 옵셔널 추가 필드를 가지고 있다. 데이터 섹션은 페이로드를 말한다. 길이는 정해지지 않았다.
TCP 헤더의 에러 체킹으로 사용된다.
complement
verb
add to (something) in a way that enhances or improves it; make perfect
강화시키다; 추가하다
"a classic blazer complements a look that's stylish or casual"
핸드셰이킹은 컴퓨터와 디바이스 사이의 연결을 말한다. 핸드셰이킹은 컴퓨터와 디바이스 모두 서로에게 프로토콜을 전달하도록 설계되어져 있다. 예를 들어, 둘은 서로에게 필요한 bit 전송률과 레이턴시를 확인할 필요가 있다.
이 메소드는ㄴ 컴퓨터 네트워크 상에서 두 호스트(클라이언트: 메인호스트, 서버: 좀 떨어진 호스트)를 연결하는데 사용된다. 클라이언트가 서버와 접촉을 하고 싶어하면 클라이언트는 서버와 쓰리웨이 핸드셰이크를 시작할 수 있다. 이는 클라이언트 컴퓨터(메인 디바이스)가 서버와 메시지를 보내고 받으며 프로세스가 종료된다.
첫 번째 호스트(앨리스)는 두 번째 호스트(밥)에게 시퀀스 넘버 x와 함께SYN(synchronize) 메시지를 전달한다. 밥은 앨리스의 시퀀스 넘버를 받게 된다.
밥은 자신의 시퀀스 넘버 y와 acknowlegement number x + 1과 함께 SYN-ACK(synchronize-acknowledgment)를 응답으로 보낸다. 앨리스는 밥의 시퀀스 넘버와 수정된 acknowledgement 넘버가 포함된 밥의 메시지를 받는다.
앨리스는 acknowledgement number y + 1과 함께 ACK로 응답을 한다. 밥은 메시지를 받고, 더 이상 응답할 필요가 없어진다.
싱크로나이즈 메시지는 서버에게 두 호스트를 연결하도록 요청을 보낸다. ACK 메시지는 메시지를 잘 받았음을 서버에게 반환하는 것이다. 두 호스트가 서로에게 싱크로나이즈 메시지를 보내도록 하는 것은 두 호스트의 연결을 의미한다. 서로 연결됨을 확인하는 메시지이다.
모든 컴퓨터는 전자기기에 속한다. 중요한 점은, 컴퓨터는 실행되는 프로그램의 결과로서 예측 가능한 output을 만든다는 점이다.
컴퓨터 시스템은 전자 디바이스이지만 모든 전자기기가 컴퓨터 시스템은 아니다. 컴퓨터는 로직과 요청을 실행하도록 하는 기본적인 컴포넌트를 가지고 있다. 공급과 프로세서가 있어야 한다. (메모리, 스토리지) 하지만 전자기기는 그러한 요소를 요구하지 않는다. 불을 끄고 켜는 것에는 프로세스가 없다. 프로세서는 소프트웨어와 펌웨어에 기반하여 0과 1을 가로질러 yes를 할 지, no를 할 지를 결정한다.
컴퓨터는 전자기기의 높은 단계로서 인식할 수 있다. 만약 전자기기가 여러 가지 프로세스를 할 수 있다면 컴퓨터의 한 종류라고 부를 수 있다.
가장 중요한 점은 기억할 수 있냐 없냐의 문제인 것 같다. 기억을 통해서 실행 속도를 높인다면 컴퓨터라고 할 수 있지 않을까. The best point is whether it can be momorizable or not. It might be called as a kind of computer if the time of the process can be faster through memory.
컴퓨터는 기능을 실행하기 위해 전기 신호와 컴포넌트에 의존하기 때문에 전자기기로 부른다.전자기기는 전기 에너지를 사용해서 정보를 제어하고 실행시키고 전달한다.
컴퓨터도 다른 전자기기처럼 전기 신호를 사용해서 여러 가지 기능들을 수행한다 (데이터 처리, 저장, 커뮤니케이션을 포함). 컴퓨터의 기본 컴포넌트에는 CPU(Central Processing Unit), memory, 저장 장치, 인풋 디바이스, 아웃풋 디바이스 등이 있다. 이 모두 전기 회선과 컴포넌트에 의존한다.
CPU는 컴퓨터의 뇌의 역할을 한다. 지시를 내리고 계산을 수행하는 책임을 가지고 있다. CPU는 여러 전기 컴포넌트로 구성되어 있다.
데이터를 임시적으로 저장하는 데 사용하는 메모리 또한 전기 컴포넌트이다.
하드 디스크, SSD(Solid-State Drive)와 같은 스토리지 디바이스 또한 전자 장치이다. 컴퓨터의 전원이 꺼졌을 때에도 데이터를 영구적으로 보관하는 데 전기 회선, 컴포넌트를 사용한다.
모니터, 프린터와 같은 아웃풋 디바이스도 컴퓨터가 보여주고 데이터를 출력하는 데 사용되는 전자기기이다.
모뎀, 네트워크 어댑터와 같이 커뮤니케이션 장치도 컴퓨터가 다른 컴퓨터나 디바이스와 소통할 수 있도록 하는 전자 기기이다.
전자레인지, 세탁기 모두 컴퓨터이다. input/outpu이 있다면 모두 컴퓨터이다. 다른 점은 IC(Integrated Circuit)이고, 특정 기능을 수행하도록 도와준다. 컴퓨터는 멀티태스킹 장비이다.
timely
adjective
done or occruing at a favorable or useful time; opportune.
딱 맞춰서; 적절한
"a timely warning"
Stream
noun
computing
a continuous flow of data or instructions, typically one haaving a constant or predictable rate.
verb
(of liquid) run or flow in a continuous current in a specified direction.
"she sat with tears streaming down her face"
흐르다
chunk
noun
a thick, solid piece of something.
"huge chunks of masonry littered the street"